// Copyright 2026 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 retail. */
        namespace retail {

            /** Namespace v2. */
            namespace v2 {

                /** Represents an AnalyticsService */
                class AnalyticsService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new AnalyticsService 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 AnalyticsService 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): AnalyticsService;

                    /**
                     * Calls ExportAnalyticsMetrics.
                     * @param request ExportAnalyticsMetricsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public exportAnalyticsMetrics(request: google.cloud.retail.v2.IExportAnalyticsMetricsRequest, callback: google.cloud.retail.v2.AnalyticsService.ExportAnalyticsMetricsCallback): void;

                    /**
                     * Calls ExportAnalyticsMetrics.
                     * @param request ExportAnalyticsMetricsRequest message or plain object
                     * @returns Promise
                     */
                    public exportAnalyticsMetrics(request: google.cloud.retail.v2.IExportAnalyticsMetricsRequest): Promise<google.longrunning.Operation>;
                }

                namespace AnalyticsService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.AnalyticsService|exportAnalyticsMetrics}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type ExportAnalyticsMetricsCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;
                }

                /** Properties of an OutputConfig. */
                interface IOutputConfig {

                    /** OutputConfig gcsDestination */
                    gcsDestination?: (google.cloud.retail.v2.OutputConfig.IGcsDestination|null);

                    /** OutputConfig bigqueryDestination */
                    bigqueryDestination?: (google.cloud.retail.v2.OutputConfig.IBigQueryDestination|null);
                }

                /** Represents an OutputConfig. */
                class OutputConfig implements IOutputConfig {

                    /**
                     * Constructs a new OutputConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IOutputConfig);

                    /** OutputConfig gcsDestination. */
                    public gcsDestination?: (google.cloud.retail.v2.OutputConfig.IGcsDestination|null);

                    /** OutputConfig bigqueryDestination. */
                    public bigqueryDestination?: (google.cloud.retail.v2.OutputConfig.IBigQueryDestination|null);

                    /** OutputConfig destination. */
                    public destination?: ("gcsDestination"|"bigqueryDestination");

                    /**
                     * Creates a new OutputConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns OutputConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IOutputConfig): google.cloud.retail.v2.OutputConfig;

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

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

                    /**
                     * Decodes an OutputConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns OutputConfig
                     * @throws {Error} If the payload is not 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.retail.v2.OutputConfig;

                    /**
                     * Decodes an OutputConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns OutputConfig
                     * @throws {Error} If the payload 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.retail.v2.OutputConfig;

                    /**
                     * Verifies an OutputConfig message.
                     * @param message Plain 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 OutputConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns OutputConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.OutputConfig;

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

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

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

                namespace OutputConfig {

                    /** Properties of a GcsDestination. */
                    interface IGcsDestination {

                        /** GcsDestination outputUriPrefix */
                        outputUriPrefix?: (string|null);
                    }

                    /** Represents a GcsDestination. */
                    class GcsDestination implements IGcsDestination {

                        /**
                         * Constructs a new GcsDestination.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.OutputConfig.IGcsDestination);

                        /** GcsDestination outputUriPrefix. */
                        public outputUriPrefix: string;

                        /**
                         * Creates a new GcsDestination instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GcsDestination instance
                         */
                        public static create(properties?: google.cloud.retail.v2.OutputConfig.IGcsDestination): google.cloud.retail.v2.OutputConfig.GcsDestination;

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

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

                        /**
                         * Decodes a GcsDestination message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GcsDestination
                         * @throws {Error} If the payload is not 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.retail.v2.OutputConfig.GcsDestination;

                        /**
                         * Decodes a GcsDestination message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GcsDestination
                         * @throws {Error} If the payload 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.retail.v2.OutputConfig.GcsDestination;

                        /**
                         * Verifies a GcsDestination message.
                         * @param message Plain 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 GcsDestination message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GcsDestination
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.OutputConfig.GcsDestination;

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

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

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

                    /** Properties of a BigQueryDestination. */
                    interface IBigQueryDestination {

                        /** BigQueryDestination datasetId */
                        datasetId?: (string|null);

                        /** BigQueryDestination tableIdPrefix */
                        tableIdPrefix?: (string|null);

                        /** BigQueryDestination tableType */
                        tableType?: (string|null);
                    }

                    /** Represents a BigQueryDestination. */
                    class BigQueryDestination implements IBigQueryDestination {

                        /**
                         * Constructs a new BigQueryDestination.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.OutputConfig.IBigQueryDestination);

                        /** BigQueryDestination datasetId. */
                        public datasetId: string;

                        /** BigQueryDestination tableIdPrefix. */
                        public tableIdPrefix: string;

                        /** BigQueryDestination tableType. */
                        public tableType: string;

                        /**
                         * Creates a new BigQueryDestination instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BigQueryDestination instance
                         */
                        public static create(properties?: google.cloud.retail.v2.OutputConfig.IBigQueryDestination): google.cloud.retail.v2.OutputConfig.BigQueryDestination;

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

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

                        /**
                         * Decodes a BigQueryDestination message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BigQueryDestination
                         * @throws {Error} If the payload is not 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.retail.v2.OutputConfig.BigQueryDestination;

                        /**
                         * Decodes a BigQueryDestination message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BigQueryDestination
                         * @throws {Error} If the payload 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.retail.v2.OutputConfig.BigQueryDestination;

                        /**
                         * Verifies a BigQueryDestination message.
                         * @param message Plain 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 BigQueryDestination message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BigQueryDestination
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.OutputConfig.BigQueryDestination;

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

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

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

                /** Properties of an ExportErrorsConfig. */
                interface IExportErrorsConfig {

                    /** ExportErrorsConfig gcsPrefix */
                    gcsPrefix?: (string|null);
                }

                /** Represents an ExportErrorsConfig. */
                class ExportErrorsConfig implements IExportErrorsConfig {

                    /**
                     * Constructs a new ExportErrorsConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IExportErrorsConfig);

                    /** ExportErrorsConfig gcsPrefix. */
                    public gcsPrefix?: (string|null);

                    /** ExportErrorsConfig destination. */
                    public destination?: "gcsPrefix";

                    /**
                     * Creates a new ExportErrorsConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ExportErrorsConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IExportErrorsConfig): google.cloud.retail.v2.ExportErrorsConfig;

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

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

                    /**
                     * Decodes an ExportErrorsConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ExportErrorsConfig
                     * @throws {Error} If the payload is not 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.retail.v2.ExportErrorsConfig;

                    /**
                     * Decodes an ExportErrorsConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ExportErrorsConfig
                     * @throws {Error} If the payload 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.retail.v2.ExportErrorsConfig;

                    /**
                     * Verifies an ExportErrorsConfig message.
                     * @param message Plain 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 ExportErrorsConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ExportErrorsConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ExportErrorsConfig;

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

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

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

                /** Properties of an ExportAnalyticsMetricsRequest. */
                interface IExportAnalyticsMetricsRequest {

                    /** ExportAnalyticsMetricsRequest catalog */
                    catalog?: (string|null);

                    /** ExportAnalyticsMetricsRequest outputConfig */
                    outputConfig?: (google.cloud.retail.v2.IOutputConfig|null);

                    /** ExportAnalyticsMetricsRequest filter */
                    filter?: (string|null);
                }

                /** Represents an ExportAnalyticsMetricsRequest. */
                class ExportAnalyticsMetricsRequest implements IExportAnalyticsMetricsRequest {

                    /**
                     * Constructs a new ExportAnalyticsMetricsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IExportAnalyticsMetricsRequest);

                    /** ExportAnalyticsMetricsRequest catalog. */
                    public catalog: string;

                    /** ExportAnalyticsMetricsRequest outputConfig. */
                    public outputConfig?: (google.cloud.retail.v2.IOutputConfig|null);

                    /** ExportAnalyticsMetricsRequest filter. */
                    public filter: string;

                    /**
                     * Creates a new ExportAnalyticsMetricsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ExportAnalyticsMetricsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IExportAnalyticsMetricsRequest): google.cloud.retail.v2.ExportAnalyticsMetricsRequest;

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

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

                    /**
                     * Decodes an ExportAnalyticsMetricsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ExportAnalyticsMetricsRequest
                     * @throws {Error} If the payload is not 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.retail.v2.ExportAnalyticsMetricsRequest;

                    /**
                     * Decodes an ExportAnalyticsMetricsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ExportAnalyticsMetricsRequest
                     * @throws {Error} If the payload 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.retail.v2.ExportAnalyticsMetricsRequest;

                    /**
                     * Verifies an ExportAnalyticsMetricsRequest message.
                     * @param message Plain 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 ExportAnalyticsMetricsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ExportAnalyticsMetricsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ExportAnalyticsMetricsRequest;

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

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

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

                /** Properties of an ExportMetadata. */
                interface IExportMetadata {

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

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

                /** Represents an ExportMetadata. */
                class ExportMetadata implements IExportMetadata {

                    /**
                     * Constructs a new ExportMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IExportMetadata);

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

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

                    /**
                     * Creates a new ExportMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ExportMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IExportMetadata): google.cloud.retail.v2.ExportMetadata;

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

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

                    /**
                     * Decodes an ExportMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ExportMetadata
                     * @throws {Error} If the payload is not 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.retail.v2.ExportMetadata;

                    /**
                     * Decodes an ExportMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ExportMetadata
                     * @throws {Error} If the payload 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.retail.v2.ExportMetadata;

                    /**
                     * Verifies an ExportMetadata message.
                     * @param message Plain 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 ExportMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ExportMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ExportMetadata;

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

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

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

                /** Properties of an ExportAnalyticsMetricsResponse. */
                interface IExportAnalyticsMetricsResponse {

                    /** ExportAnalyticsMetricsResponse errorSamples */
                    errorSamples?: (google.rpc.IStatus[]|null);

                    /** ExportAnalyticsMetricsResponse errorsConfig */
                    errorsConfig?: (google.cloud.retail.v2.IExportErrorsConfig|null);

                    /** ExportAnalyticsMetricsResponse outputResult */
                    outputResult?: (google.cloud.retail.v2.IOutputResult|null);
                }

                /** Represents an ExportAnalyticsMetricsResponse. */
                class ExportAnalyticsMetricsResponse implements IExportAnalyticsMetricsResponse {

                    /**
                     * Constructs a new ExportAnalyticsMetricsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IExportAnalyticsMetricsResponse);

                    /** ExportAnalyticsMetricsResponse errorSamples. */
                    public errorSamples: google.rpc.IStatus[];

                    /** ExportAnalyticsMetricsResponse errorsConfig. */
                    public errorsConfig?: (google.cloud.retail.v2.IExportErrorsConfig|null);

                    /** ExportAnalyticsMetricsResponse outputResult. */
                    public outputResult?: (google.cloud.retail.v2.IOutputResult|null);

                    /**
                     * Creates a new ExportAnalyticsMetricsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ExportAnalyticsMetricsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IExportAnalyticsMetricsResponse): google.cloud.retail.v2.ExportAnalyticsMetricsResponse;

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

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

                    /**
                     * Decodes an ExportAnalyticsMetricsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ExportAnalyticsMetricsResponse
                     * @throws {Error} If the payload is not 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.retail.v2.ExportAnalyticsMetricsResponse;

                    /**
                     * Decodes an ExportAnalyticsMetricsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ExportAnalyticsMetricsResponse
                     * @throws {Error} If the payload 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.retail.v2.ExportAnalyticsMetricsResponse;

                    /**
                     * Verifies an ExportAnalyticsMetricsResponse message.
                     * @param message Plain 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 ExportAnalyticsMetricsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ExportAnalyticsMetricsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ExportAnalyticsMetricsResponse;

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

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

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

                /** Properties of an OutputResult. */
                interface IOutputResult {

                    /** OutputResult bigqueryResult */
                    bigqueryResult?: (google.cloud.retail.v2.IBigQueryOutputResult[]|null);

                    /** OutputResult gcsResult */
                    gcsResult?: (google.cloud.retail.v2.IGcsOutputResult[]|null);
                }

                /** Represents an OutputResult. */
                class OutputResult implements IOutputResult {

                    /**
                     * Constructs a new OutputResult.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IOutputResult);

                    /** OutputResult bigqueryResult. */
                    public bigqueryResult: google.cloud.retail.v2.IBigQueryOutputResult[];

                    /** OutputResult gcsResult. */
                    public gcsResult: google.cloud.retail.v2.IGcsOutputResult[];

                    /**
                     * Creates a new OutputResult instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns OutputResult instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IOutputResult): google.cloud.retail.v2.OutputResult;

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

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

                    /**
                     * Decodes an OutputResult message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns OutputResult
                     * @throws {Error} If the payload is not 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.retail.v2.OutputResult;

                    /**
                     * Decodes an OutputResult message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns OutputResult
                     * @throws {Error} If the payload 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.retail.v2.OutputResult;

                    /**
                     * Verifies an OutputResult message.
                     * @param message Plain 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 OutputResult message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns OutputResult
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.OutputResult;

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

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

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

                /** Properties of a BigQueryOutputResult. */
                interface IBigQueryOutputResult {

                    /** BigQueryOutputResult datasetId */
                    datasetId?: (string|null);

                    /** BigQueryOutputResult tableId */
                    tableId?: (string|null);
                }

                /** Represents a BigQueryOutputResult. */
                class BigQueryOutputResult implements IBigQueryOutputResult {

                    /**
                     * Constructs a new BigQueryOutputResult.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IBigQueryOutputResult);

                    /** BigQueryOutputResult datasetId. */
                    public datasetId: string;

                    /** BigQueryOutputResult tableId. */
                    public tableId: string;

                    /**
                     * Creates a new BigQueryOutputResult instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns BigQueryOutputResult instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IBigQueryOutputResult): google.cloud.retail.v2.BigQueryOutputResult;

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

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

                    /**
                     * Decodes a BigQueryOutputResult message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns BigQueryOutputResult
                     * @throws {Error} If the payload is not 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.retail.v2.BigQueryOutputResult;

                    /**
                     * Decodes a BigQueryOutputResult message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns BigQueryOutputResult
                     * @throws {Error} If the payload 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.retail.v2.BigQueryOutputResult;

                    /**
                     * Verifies a BigQueryOutputResult message.
                     * @param message Plain 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 BigQueryOutputResult message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns BigQueryOutputResult
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.BigQueryOutputResult;

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

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

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

                /** Properties of a GcsOutputResult. */
                interface IGcsOutputResult {

                    /** GcsOutputResult outputUri */
                    outputUri?: (string|null);
                }

                /** Represents a GcsOutputResult. */
                class GcsOutputResult implements IGcsOutputResult {

                    /**
                     * Constructs a new GcsOutputResult.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IGcsOutputResult);

                    /** GcsOutputResult outputUri. */
                    public outputUri: string;

                    /**
                     * Creates a new GcsOutputResult instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GcsOutputResult instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IGcsOutputResult): google.cloud.retail.v2.GcsOutputResult;

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

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

                    /**
                     * Decodes a GcsOutputResult message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GcsOutputResult
                     * @throws {Error} If the payload is not 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.retail.v2.GcsOutputResult;

                    /**
                     * Decodes a GcsOutputResult message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GcsOutputResult
                     * @throws {Error} If the payload 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.retail.v2.GcsOutputResult;

                    /**
                     * Verifies a GcsOutputResult message.
                     * @param message Plain 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 GcsOutputResult message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GcsOutputResult
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.GcsOutputResult;

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

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

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

                /** Properties of a ProductLevelConfig. */
                interface IProductLevelConfig {

                    /** ProductLevelConfig ingestionProductType */
                    ingestionProductType?: (string|null);

                    /** ProductLevelConfig merchantCenterProductIdField */
                    merchantCenterProductIdField?: (string|null);
                }

                /** Represents a ProductLevelConfig. */
                class ProductLevelConfig implements IProductLevelConfig {

                    /**
                     * Constructs a new ProductLevelConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IProductLevelConfig);

                    /** ProductLevelConfig ingestionProductType. */
                    public ingestionProductType: string;

                    /** ProductLevelConfig merchantCenterProductIdField. */
                    public merchantCenterProductIdField: string;

                    /**
                     * Creates a new ProductLevelConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ProductLevelConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IProductLevelConfig): google.cloud.retail.v2.ProductLevelConfig;

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

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

                    /**
                     * Decodes a ProductLevelConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ProductLevelConfig
                     * @throws {Error} If the payload is not 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.retail.v2.ProductLevelConfig;

                    /**
                     * Decodes a ProductLevelConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ProductLevelConfig
                     * @throws {Error} If the payload 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.retail.v2.ProductLevelConfig;

                    /**
                     * Verifies a ProductLevelConfig message.
                     * @param message Plain 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 ProductLevelConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ProductLevelConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ProductLevelConfig;

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

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

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

                /** Properties of a CatalogAttribute. */
                interface ICatalogAttribute {

                    /** CatalogAttribute key */
                    key?: (string|null);

                    /** CatalogAttribute inUse */
                    inUse?: (boolean|null);

                    /** CatalogAttribute type */
                    type?: (google.cloud.retail.v2.CatalogAttribute.AttributeType|keyof typeof google.cloud.retail.v2.CatalogAttribute.AttributeType|null);

                    /** CatalogAttribute indexableOption */
                    indexableOption?: (google.cloud.retail.v2.CatalogAttribute.IndexableOption|keyof typeof google.cloud.retail.v2.CatalogAttribute.IndexableOption|null);

                    /** CatalogAttribute dynamicFacetableOption */
                    dynamicFacetableOption?: (google.cloud.retail.v2.CatalogAttribute.DynamicFacetableOption|keyof typeof google.cloud.retail.v2.CatalogAttribute.DynamicFacetableOption|null);

                    /** CatalogAttribute searchableOption */
                    searchableOption?: (google.cloud.retail.v2.CatalogAttribute.SearchableOption|keyof typeof google.cloud.retail.v2.CatalogAttribute.SearchableOption|null);

                    /** CatalogAttribute exactSearchableOption */
                    exactSearchableOption?: (google.cloud.retail.v2.CatalogAttribute.ExactSearchableOption|keyof typeof google.cloud.retail.v2.CatalogAttribute.ExactSearchableOption|null);

                    /** CatalogAttribute retrievableOption */
                    retrievableOption?: (google.cloud.retail.v2.CatalogAttribute.RetrievableOption|keyof typeof google.cloud.retail.v2.CatalogAttribute.RetrievableOption|null);

                    /** CatalogAttribute facetConfig */
                    facetConfig?: (google.cloud.retail.v2.CatalogAttribute.IFacetConfig|null);
                }

                /** Represents a CatalogAttribute. */
                class CatalogAttribute implements ICatalogAttribute {

                    /**
                     * Constructs a new CatalogAttribute.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.ICatalogAttribute);

                    /** CatalogAttribute key. */
                    public key: string;

                    /** CatalogAttribute inUse. */
                    public inUse: boolean;

                    /** CatalogAttribute type. */
                    public type: (google.cloud.retail.v2.CatalogAttribute.AttributeType|keyof typeof google.cloud.retail.v2.CatalogAttribute.AttributeType);

                    /** CatalogAttribute indexableOption. */
                    public indexableOption: (google.cloud.retail.v2.CatalogAttribute.IndexableOption|keyof typeof google.cloud.retail.v2.CatalogAttribute.IndexableOption);

                    /** CatalogAttribute dynamicFacetableOption. */
                    public dynamicFacetableOption: (google.cloud.retail.v2.CatalogAttribute.DynamicFacetableOption|keyof typeof google.cloud.retail.v2.CatalogAttribute.DynamicFacetableOption);

                    /** CatalogAttribute searchableOption. */
                    public searchableOption: (google.cloud.retail.v2.CatalogAttribute.SearchableOption|keyof typeof google.cloud.retail.v2.CatalogAttribute.SearchableOption);

                    /** CatalogAttribute exactSearchableOption. */
                    public exactSearchableOption: (google.cloud.retail.v2.CatalogAttribute.ExactSearchableOption|keyof typeof google.cloud.retail.v2.CatalogAttribute.ExactSearchableOption);

                    /** CatalogAttribute retrievableOption. */
                    public retrievableOption: (google.cloud.retail.v2.CatalogAttribute.RetrievableOption|keyof typeof google.cloud.retail.v2.CatalogAttribute.RetrievableOption);

                    /** CatalogAttribute facetConfig. */
                    public facetConfig?: (google.cloud.retail.v2.CatalogAttribute.IFacetConfig|null);

                    /**
                     * Creates a new CatalogAttribute instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CatalogAttribute instance
                     */
                    public static create(properties?: google.cloud.retail.v2.ICatalogAttribute): google.cloud.retail.v2.CatalogAttribute;

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

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

                    /**
                     * Decodes a CatalogAttribute message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CatalogAttribute
                     * @throws {Error} If the payload is not 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.retail.v2.CatalogAttribute;

                    /**
                     * Decodes a CatalogAttribute message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CatalogAttribute
                     * @throws {Error} If the payload 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.retail.v2.CatalogAttribute;

                    /**
                     * Verifies a CatalogAttribute message.
                     * @param message Plain 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 CatalogAttribute message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CatalogAttribute
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.CatalogAttribute;

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

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

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

                namespace CatalogAttribute {

                    /** Properties of a FacetConfig. */
                    interface IFacetConfig {

                        /** FacetConfig facetIntervals */
                        facetIntervals?: (google.cloud.retail.v2.IInterval[]|null);

                        /** FacetConfig ignoredFacetValues */
                        ignoredFacetValues?: (google.cloud.retail.v2.CatalogAttribute.FacetConfig.IIgnoredFacetValues[]|null);

                        /** FacetConfig mergedFacetValues */
                        mergedFacetValues?: (google.cloud.retail.v2.CatalogAttribute.FacetConfig.IMergedFacetValue[]|null);

                        /** FacetConfig mergedFacet */
                        mergedFacet?: (google.cloud.retail.v2.CatalogAttribute.FacetConfig.IMergedFacet|null);

                        /** FacetConfig rerankConfig */
                        rerankConfig?: (google.cloud.retail.v2.CatalogAttribute.FacetConfig.IRerankConfig|null);
                    }

                    /** Represents a FacetConfig. */
                    class FacetConfig implements IFacetConfig {

                        /**
                         * Constructs a new FacetConfig.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.CatalogAttribute.IFacetConfig);

                        /** FacetConfig facetIntervals. */
                        public facetIntervals: google.cloud.retail.v2.IInterval[];

                        /** FacetConfig ignoredFacetValues. */
                        public ignoredFacetValues: google.cloud.retail.v2.CatalogAttribute.FacetConfig.IIgnoredFacetValues[];

                        /** FacetConfig mergedFacetValues. */
                        public mergedFacetValues: google.cloud.retail.v2.CatalogAttribute.FacetConfig.IMergedFacetValue[];

                        /** FacetConfig mergedFacet. */
                        public mergedFacet?: (google.cloud.retail.v2.CatalogAttribute.FacetConfig.IMergedFacet|null);

                        /** FacetConfig rerankConfig. */
                        public rerankConfig?: (google.cloud.retail.v2.CatalogAttribute.FacetConfig.IRerankConfig|null);

                        /**
                         * Creates a new FacetConfig instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FacetConfig instance
                         */
                        public static create(properties?: google.cloud.retail.v2.CatalogAttribute.IFacetConfig): google.cloud.retail.v2.CatalogAttribute.FacetConfig;

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

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

                        /**
                         * Decodes a FacetConfig message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FacetConfig
                         * @throws {Error} If the payload is not 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.retail.v2.CatalogAttribute.FacetConfig;

                        /**
                         * Decodes a FacetConfig message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FacetConfig
                         * @throws {Error} If the payload 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.retail.v2.CatalogAttribute.FacetConfig;

                        /**
                         * Verifies a FacetConfig message.
                         * @param message Plain 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 FacetConfig message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FacetConfig
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.CatalogAttribute.FacetConfig;

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

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

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

                    namespace FacetConfig {

                        /** Properties of an IgnoredFacetValues. */
                        interface IIgnoredFacetValues {

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

                            /** IgnoredFacetValues startTime */
                            startTime?: (google.protobuf.ITimestamp|null);

                            /** IgnoredFacetValues endTime */
                            endTime?: (google.protobuf.ITimestamp|null);
                        }

                        /** Represents an IgnoredFacetValues. */
                        class IgnoredFacetValues implements IIgnoredFacetValues {

                            /**
                             * Constructs a new IgnoredFacetValues.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2.CatalogAttribute.FacetConfig.IIgnoredFacetValues);

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

                            /** IgnoredFacetValues startTime. */
                            public startTime?: (google.protobuf.ITimestamp|null);

                            /** IgnoredFacetValues endTime. */
                            public endTime?: (google.protobuf.ITimestamp|null);

                            /**
                             * Creates a new IgnoredFacetValues instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns IgnoredFacetValues instance
                             */
                            public static create(properties?: google.cloud.retail.v2.CatalogAttribute.FacetConfig.IIgnoredFacetValues): google.cloud.retail.v2.CatalogAttribute.FacetConfig.IgnoredFacetValues;

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

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

                            /**
                             * Decodes an IgnoredFacetValues message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns IgnoredFacetValues
                             * @throws {Error} If the payload is not 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.retail.v2.CatalogAttribute.FacetConfig.IgnoredFacetValues;

                            /**
                             * Decodes an IgnoredFacetValues message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns IgnoredFacetValues
                             * @throws {Error} If the payload 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.retail.v2.CatalogAttribute.FacetConfig.IgnoredFacetValues;

                            /**
                             * Verifies an IgnoredFacetValues message.
                             * @param message Plain 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 IgnoredFacetValues message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns IgnoredFacetValues
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.CatalogAttribute.FacetConfig.IgnoredFacetValues;

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

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

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

                        /** Properties of a MergedFacetValue. */
                        interface IMergedFacetValue {

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

                            /** MergedFacetValue mergedValue */
                            mergedValue?: (string|null);
                        }

                        /** Represents a MergedFacetValue. */
                        class MergedFacetValue implements IMergedFacetValue {

                            /**
                             * Constructs a new MergedFacetValue.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2.CatalogAttribute.FacetConfig.IMergedFacetValue);

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

                            /** MergedFacetValue mergedValue. */
                            public mergedValue: string;

                            /**
                             * Creates a new MergedFacetValue instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns MergedFacetValue instance
                             */
                            public static create(properties?: google.cloud.retail.v2.CatalogAttribute.FacetConfig.IMergedFacetValue): google.cloud.retail.v2.CatalogAttribute.FacetConfig.MergedFacetValue;

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

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

                            /**
                             * Decodes a MergedFacetValue message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns MergedFacetValue
                             * @throws {Error} If the payload is not 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.retail.v2.CatalogAttribute.FacetConfig.MergedFacetValue;

                            /**
                             * Decodes a MergedFacetValue message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns MergedFacetValue
                             * @throws {Error} If the payload 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.retail.v2.CatalogAttribute.FacetConfig.MergedFacetValue;

                            /**
                             * Verifies a MergedFacetValue message.
                             * @param message Plain 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 MergedFacetValue message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns MergedFacetValue
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.CatalogAttribute.FacetConfig.MergedFacetValue;

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

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

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

                        /** Properties of a MergedFacet. */
                        interface IMergedFacet {

                            /** MergedFacet mergedFacetKey */
                            mergedFacetKey?: (string|null);
                        }

                        /** Represents a MergedFacet. */
                        class MergedFacet implements IMergedFacet {

                            /**
                             * Constructs a new MergedFacet.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2.CatalogAttribute.FacetConfig.IMergedFacet);

                            /** MergedFacet mergedFacetKey. */
                            public mergedFacetKey: string;

                            /**
                             * Creates a new MergedFacet instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns MergedFacet instance
                             */
                            public static create(properties?: google.cloud.retail.v2.CatalogAttribute.FacetConfig.IMergedFacet): google.cloud.retail.v2.CatalogAttribute.FacetConfig.MergedFacet;

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

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

                            /**
                             * Decodes a MergedFacet message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns MergedFacet
                             * @throws {Error} If the payload is not 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.retail.v2.CatalogAttribute.FacetConfig.MergedFacet;

                            /**
                             * Decodes a MergedFacet message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns MergedFacet
                             * @throws {Error} If the payload 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.retail.v2.CatalogAttribute.FacetConfig.MergedFacet;

                            /**
                             * Verifies a MergedFacet message.
                             * @param message Plain 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 MergedFacet message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns MergedFacet
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.CatalogAttribute.FacetConfig.MergedFacet;

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

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

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

                        /** Properties of a RerankConfig. */
                        interface IRerankConfig {

                            /** RerankConfig rerankFacet */
                            rerankFacet?: (boolean|null);

                            /** RerankConfig facetValues */
                            facetValues?: (string[]|null);
                        }

                        /** Represents a RerankConfig. */
                        class RerankConfig implements IRerankConfig {

                            /**
                             * Constructs a new RerankConfig.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2.CatalogAttribute.FacetConfig.IRerankConfig);

                            /** RerankConfig rerankFacet. */
                            public rerankFacet: boolean;

                            /** RerankConfig facetValues. */
                            public facetValues: string[];

                            /**
                             * Creates a new RerankConfig instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns RerankConfig instance
                             */
                            public static create(properties?: google.cloud.retail.v2.CatalogAttribute.FacetConfig.IRerankConfig): google.cloud.retail.v2.CatalogAttribute.FacetConfig.RerankConfig;

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

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

                            /**
                             * Decodes a RerankConfig message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns RerankConfig
                             * @throws {Error} If the payload is not 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.retail.v2.CatalogAttribute.FacetConfig.RerankConfig;

                            /**
                             * Decodes a RerankConfig message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns RerankConfig
                             * @throws {Error} If the payload 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.retail.v2.CatalogAttribute.FacetConfig.RerankConfig;

                            /**
                             * Verifies a RerankConfig message.
                             * @param message Plain 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 RerankConfig message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns RerankConfig
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.CatalogAttribute.FacetConfig.RerankConfig;

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

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

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

                    /** AttributeType enum. */
                    enum AttributeType {
                        UNKNOWN = 0,
                        TEXTUAL = 1,
                        NUMERICAL = 2
                    }

                    /** IndexableOption enum. */
                    enum IndexableOption {
                        INDEXABLE_OPTION_UNSPECIFIED = 0,
                        INDEXABLE_ENABLED = 1,
                        INDEXABLE_DISABLED = 2
                    }

                    /** DynamicFacetableOption enum. */
                    enum DynamicFacetableOption {
                        DYNAMIC_FACETABLE_OPTION_UNSPECIFIED = 0,
                        DYNAMIC_FACETABLE_ENABLED = 1,
                        DYNAMIC_FACETABLE_DISABLED = 2
                    }

                    /** SearchableOption enum. */
                    enum SearchableOption {
                        SEARCHABLE_OPTION_UNSPECIFIED = 0,
                        SEARCHABLE_ENABLED = 1,
                        SEARCHABLE_DISABLED = 2
                    }

                    /** ExactSearchableOption enum. */
                    enum ExactSearchableOption {
                        EXACT_SEARCHABLE_OPTION_UNSPECIFIED = 0,
                        EXACT_SEARCHABLE_ENABLED = 1,
                        EXACT_SEARCHABLE_DISABLED = 2
                    }

                    /** RetrievableOption enum. */
                    enum RetrievableOption {
                        RETRIEVABLE_OPTION_UNSPECIFIED = 0,
                        RETRIEVABLE_ENABLED = 1,
                        RETRIEVABLE_DISABLED = 2
                    }
                }

                /** Properties of an AttributesConfig. */
                interface IAttributesConfig {

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

                    /** AttributesConfig catalogAttributes */
                    catalogAttributes?: ({ [k: string]: google.cloud.retail.v2.ICatalogAttribute }|null);

                    /** AttributesConfig attributeConfigLevel */
                    attributeConfigLevel?: (google.cloud.retail.v2.AttributeConfigLevel|keyof typeof google.cloud.retail.v2.AttributeConfigLevel|null);
                }

                /** Represents an AttributesConfig. */
                class AttributesConfig implements IAttributesConfig {

                    /**
                     * Constructs a new AttributesConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IAttributesConfig);

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

                    /** AttributesConfig catalogAttributes. */
                    public catalogAttributes: { [k: string]: google.cloud.retail.v2.ICatalogAttribute };

                    /** AttributesConfig attributeConfigLevel. */
                    public attributeConfigLevel: (google.cloud.retail.v2.AttributeConfigLevel|keyof typeof google.cloud.retail.v2.AttributeConfigLevel);

                    /**
                     * Creates a new AttributesConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns AttributesConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IAttributesConfig): google.cloud.retail.v2.AttributesConfig;

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

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

                    /**
                     * Decodes an AttributesConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns AttributesConfig
                     * @throws {Error} If the payload is not 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.retail.v2.AttributesConfig;

                    /**
                     * Decodes an AttributesConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns AttributesConfig
                     * @throws {Error} If the payload 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.retail.v2.AttributesConfig;

                    /**
                     * Verifies an AttributesConfig message.
                     * @param message Plain 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 AttributesConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns AttributesConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.AttributesConfig;

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

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

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

                /** Properties of a CompletionConfig. */
                interface ICompletionConfig {

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

                    /** CompletionConfig matchingOrder */
                    matchingOrder?: (string|null);

                    /** CompletionConfig maxSuggestions */
                    maxSuggestions?: (number|null);

                    /** CompletionConfig minPrefixLength */
                    minPrefixLength?: (number|null);

                    /** CompletionConfig autoLearning */
                    autoLearning?: (boolean|null);

                    /** CompletionConfig suggestionsInputConfig */
                    suggestionsInputConfig?: (google.cloud.retail.v2.ICompletionDataInputConfig|null);

                    /** CompletionConfig lastSuggestionsImportOperation */
                    lastSuggestionsImportOperation?: (string|null);

                    /** CompletionConfig denylistInputConfig */
                    denylistInputConfig?: (google.cloud.retail.v2.ICompletionDataInputConfig|null);

                    /** CompletionConfig lastDenylistImportOperation */
                    lastDenylistImportOperation?: (string|null);

                    /** CompletionConfig allowlistInputConfig */
                    allowlistInputConfig?: (google.cloud.retail.v2.ICompletionDataInputConfig|null);

                    /** CompletionConfig lastAllowlistImportOperation */
                    lastAllowlistImportOperation?: (string|null);
                }

                /** Represents a CompletionConfig. */
                class CompletionConfig implements ICompletionConfig {

                    /**
                     * Constructs a new CompletionConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.ICompletionConfig);

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

                    /** CompletionConfig matchingOrder. */
                    public matchingOrder: string;

                    /** CompletionConfig maxSuggestions. */
                    public maxSuggestions: number;

                    /** CompletionConfig minPrefixLength. */
                    public minPrefixLength: number;

                    /** CompletionConfig autoLearning. */
                    public autoLearning: boolean;

                    /** CompletionConfig suggestionsInputConfig. */
                    public suggestionsInputConfig?: (google.cloud.retail.v2.ICompletionDataInputConfig|null);

                    /** CompletionConfig lastSuggestionsImportOperation. */
                    public lastSuggestionsImportOperation: string;

                    /** CompletionConfig denylistInputConfig. */
                    public denylistInputConfig?: (google.cloud.retail.v2.ICompletionDataInputConfig|null);

                    /** CompletionConfig lastDenylistImportOperation. */
                    public lastDenylistImportOperation: string;

                    /** CompletionConfig allowlistInputConfig. */
                    public allowlistInputConfig?: (google.cloud.retail.v2.ICompletionDataInputConfig|null);

                    /** CompletionConfig lastAllowlistImportOperation. */
                    public lastAllowlistImportOperation: string;

                    /**
                     * Creates a new CompletionConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CompletionConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2.ICompletionConfig): google.cloud.retail.v2.CompletionConfig;

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

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

                    /**
                     * Decodes a CompletionConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CompletionConfig
                     * @throws {Error} If the payload is not 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.retail.v2.CompletionConfig;

                    /**
                     * Decodes a CompletionConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CompletionConfig
                     * @throws {Error} If the payload 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.retail.v2.CompletionConfig;

                    /**
                     * Verifies a CompletionConfig message.
                     * @param message Plain 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 CompletionConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CompletionConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.CompletionConfig;

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

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

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

                /** Properties of a Catalog. */
                interface ICatalog {

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

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

                    /** Catalog productLevelConfig */
                    productLevelConfig?: (google.cloud.retail.v2.IProductLevelConfig|null);
                }

                /** Represents a Catalog. */
                class Catalog implements ICatalog {

                    /**
                     * Constructs a new Catalog.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.ICatalog);

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

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

                    /** Catalog productLevelConfig. */
                    public productLevelConfig?: (google.cloud.retail.v2.IProductLevelConfig|null);

                    /**
                     * Creates a new Catalog instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Catalog instance
                     */
                    public static create(properties?: google.cloud.retail.v2.ICatalog): google.cloud.retail.v2.Catalog;

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

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

                    /**
                     * Decodes a Catalog message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Catalog
                     * @throws {Error} If the payload is not 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.retail.v2.Catalog;

                    /**
                     * Decodes a Catalog message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Catalog
                     * @throws {Error} If the payload 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.retail.v2.Catalog;

                    /**
                     * Verifies a Catalog message.
                     * @param message Plain 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 Catalog message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Catalog
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.Catalog;

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

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

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

                /** AttributeConfigLevel enum. */
                enum AttributeConfigLevel {
                    ATTRIBUTE_CONFIG_LEVEL_UNSPECIFIED = 0,
                    PRODUCT_LEVEL_ATTRIBUTE_CONFIG = 1,
                    CATALOG_LEVEL_ATTRIBUTE_CONFIG = 2
                }

                /** SolutionType enum. */
                enum SolutionType {
                    SOLUTION_TYPE_UNSPECIFIED = 0,
                    SOLUTION_TYPE_RECOMMENDATION = 1,
                    SOLUTION_TYPE_SEARCH = 2
                }

                /** RecommendationsFilteringOption enum. */
                enum RecommendationsFilteringOption {
                    RECOMMENDATIONS_FILTERING_OPTION_UNSPECIFIED = 0,
                    RECOMMENDATIONS_FILTERING_DISABLED = 1,
                    RECOMMENDATIONS_FILTERING_ENABLED = 3
                }

                /** SearchSolutionUseCase enum. */
                enum SearchSolutionUseCase {
                    SEARCH_SOLUTION_USE_CASE_UNSPECIFIED = 0,
                    SEARCH_SOLUTION_USE_CASE_SEARCH = 1,
                    SEARCH_SOLUTION_USE_CASE_BROWSE = 2
                }

                /** Properties of a Condition. */
                interface ICondition {

                    /** Condition queryTerms */
                    queryTerms?: (google.cloud.retail.v2.Condition.IQueryTerm[]|null);

                    /** Condition activeTimeRange */
                    activeTimeRange?: (google.cloud.retail.v2.Condition.ITimeRange[]|null);

                    /** Condition pageCategories */
                    pageCategories?: (string[]|null);
                }

                /** Represents a Condition. */
                class Condition implements ICondition {

                    /**
                     * Constructs a new Condition.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.ICondition);

                    /** Condition queryTerms. */
                    public queryTerms: google.cloud.retail.v2.Condition.IQueryTerm[];

                    /** Condition activeTimeRange. */
                    public activeTimeRange: google.cloud.retail.v2.Condition.ITimeRange[];

                    /** Condition pageCategories. */
                    public pageCategories: string[];

                    /**
                     * Creates a new Condition instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Condition instance
                     */
                    public static create(properties?: google.cloud.retail.v2.ICondition): google.cloud.retail.v2.Condition;

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

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

                    /**
                     * Decodes a Condition message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Condition
                     * @throws {Error} If the payload is not 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.retail.v2.Condition;

                    /**
                     * Decodes a Condition message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Condition
                     * @throws {Error} If the payload 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.retail.v2.Condition;

                    /**
                     * Verifies a Condition message.
                     * @param message Plain 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 Condition message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Condition
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.Condition;

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

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

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

                namespace Condition {

                    /** Properties of a QueryTerm. */
                    interface IQueryTerm {

                        /** QueryTerm value */
                        value?: (string|null);

                        /** QueryTerm fullMatch */
                        fullMatch?: (boolean|null);
                    }

                    /** Represents a QueryTerm. */
                    class QueryTerm implements IQueryTerm {

                        /**
                         * Constructs a new QueryTerm.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.Condition.IQueryTerm);

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

                        /** QueryTerm fullMatch. */
                        public fullMatch: boolean;

                        /**
                         * Creates a new QueryTerm instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns QueryTerm instance
                         */
                        public static create(properties?: google.cloud.retail.v2.Condition.IQueryTerm): google.cloud.retail.v2.Condition.QueryTerm;

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

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

                        /**
                         * Decodes a QueryTerm message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns QueryTerm
                         * @throws {Error} If the payload is not 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.retail.v2.Condition.QueryTerm;

                        /**
                         * Decodes a QueryTerm message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns QueryTerm
                         * @throws {Error} If the payload 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.retail.v2.Condition.QueryTerm;

                        /**
                         * Verifies a QueryTerm message.
                         * @param message Plain 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 QueryTerm message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns QueryTerm
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.Condition.QueryTerm;

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

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

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

                    /** Properties of a TimeRange. */
                    interface ITimeRange {

                        /** TimeRange startTime */
                        startTime?: (google.protobuf.ITimestamp|null);

                        /** TimeRange endTime */
                        endTime?: (google.protobuf.ITimestamp|null);
                    }

                    /** Represents a TimeRange. */
                    class TimeRange implements ITimeRange {

                        /**
                         * Constructs a new TimeRange.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.Condition.ITimeRange);

                        /** TimeRange startTime. */
                        public startTime?: (google.protobuf.ITimestamp|null);

                        /** TimeRange endTime. */
                        public endTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * Creates a new TimeRange instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TimeRange instance
                         */
                        public static create(properties?: google.cloud.retail.v2.Condition.ITimeRange): google.cloud.retail.v2.Condition.TimeRange;

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

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

                        /**
                         * Decodes a TimeRange message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TimeRange
                         * @throws {Error} If the payload is not 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.retail.v2.Condition.TimeRange;

                        /**
                         * Decodes a TimeRange message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TimeRange
                         * @throws {Error} If the payload 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.retail.v2.Condition.TimeRange;

                        /**
                         * Verifies a TimeRange message.
                         * @param message Plain 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 TimeRange message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TimeRange
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.Condition.TimeRange;

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

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

                        /**
                         * Gets the default type url for TimeRange
                         * @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 boostAction */
                    boostAction?: (google.cloud.retail.v2.Rule.IBoostAction|null);

                    /** Rule redirectAction */
                    redirectAction?: (google.cloud.retail.v2.Rule.IRedirectAction|null);

                    /** Rule onewaySynonymsAction */
                    onewaySynonymsAction?: (google.cloud.retail.v2.Rule.IOnewaySynonymsAction|null);

                    /** Rule doNotAssociateAction */
                    doNotAssociateAction?: (google.cloud.retail.v2.Rule.IDoNotAssociateAction|null);

                    /** Rule replacementAction */
                    replacementAction?: (google.cloud.retail.v2.Rule.IReplacementAction|null);

                    /** Rule ignoreAction */
                    ignoreAction?: (google.cloud.retail.v2.Rule.IIgnoreAction|null);

                    /** Rule filterAction */
                    filterAction?: (google.cloud.retail.v2.Rule.IFilterAction|null);

                    /** Rule twowaySynonymsAction */
                    twowaySynonymsAction?: (google.cloud.retail.v2.Rule.ITwowaySynonymsAction|null);

                    /** Rule forceReturnFacetAction */
                    forceReturnFacetAction?: (google.cloud.retail.v2.Rule.IForceReturnFacetAction|null);

                    /** Rule removeFacetAction */
                    removeFacetAction?: (google.cloud.retail.v2.Rule.IRemoveFacetAction|null);

                    /** Rule pinAction */
                    pinAction?: (google.cloud.retail.v2.Rule.IPinAction|null);

                    /** Rule condition */
                    condition?: (google.cloud.retail.v2.ICondition|null);
                }

                /** Represents a Rule. */
                class Rule implements IRule {

                    /**
                     * Constructs a new Rule.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IRule);

                    /** Rule boostAction. */
                    public boostAction?: (google.cloud.retail.v2.Rule.IBoostAction|null);

                    /** Rule redirectAction. */
                    public redirectAction?: (google.cloud.retail.v2.Rule.IRedirectAction|null);

                    /** Rule onewaySynonymsAction. */
                    public onewaySynonymsAction?: (google.cloud.retail.v2.Rule.IOnewaySynonymsAction|null);

                    /** Rule doNotAssociateAction. */
                    public doNotAssociateAction?: (google.cloud.retail.v2.Rule.IDoNotAssociateAction|null);

                    /** Rule replacementAction. */
                    public replacementAction?: (google.cloud.retail.v2.Rule.IReplacementAction|null);

                    /** Rule ignoreAction. */
                    public ignoreAction?: (google.cloud.retail.v2.Rule.IIgnoreAction|null);

                    /** Rule filterAction. */
                    public filterAction?: (google.cloud.retail.v2.Rule.IFilterAction|null);

                    /** Rule twowaySynonymsAction. */
                    public twowaySynonymsAction?: (google.cloud.retail.v2.Rule.ITwowaySynonymsAction|null);

                    /** Rule forceReturnFacetAction. */
                    public forceReturnFacetAction?: (google.cloud.retail.v2.Rule.IForceReturnFacetAction|null);

                    /** Rule removeFacetAction. */
                    public removeFacetAction?: (google.cloud.retail.v2.Rule.IRemoveFacetAction|null);

                    /** Rule pinAction. */
                    public pinAction?: (google.cloud.retail.v2.Rule.IPinAction|null);

                    /** Rule condition. */
                    public condition?: (google.cloud.retail.v2.ICondition|null);

                    /** Rule action. */
                    public action?: ("boostAction"|"redirectAction"|"onewaySynonymsAction"|"doNotAssociateAction"|"replacementAction"|"ignoreAction"|"filterAction"|"twowaySynonymsAction"|"forceReturnFacetAction"|"removeFacetAction"|"pinAction");

                    /**
                     * Creates a new Rule instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Rule instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IRule): google.cloud.retail.v2.Rule;

                    /**
                     * Encodes the specified Rule message. Does not implicitly {@link google.cloud.retail.v2.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.retail.v2.IRule, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Rule message, length delimited. Does not implicitly {@link google.cloud.retail.v2.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.retail.v2.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.retail.v2.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.retail.v2.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.retail.v2.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.retail.v2.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 {

                    /** Properties of a BoostAction. */
                    interface IBoostAction {

                        /** BoostAction boost */
                        boost?: (number|null);

                        /** BoostAction productsFilter */
                        productsFilter?: (string|null);
                    }

                    /** Represents a BoostAction. */
                    class BoostAction implements IBoostAction {

                        /**
                         * Constructs a new BoostAction.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.Rule.IBoostAction);

                        /** BoostAction boost. */
                        public boost: number;

                        /** BoostAction productsFilter. */
                        public productsFilter: string;

                        /**
                         * Creates a new BoostAction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BoostAction instance
                         */
                        public static create(properties?: google.cloud.retail.v2.Rule.IBoostAction): google.cloud.retail.v2.Rule.BoostAction;

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

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

                        /**
                         * Decodes a BoostAction message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BoostAction
                         * @throws {Error} If the payload is not 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.retail.v2.Rule.BoostAction;

                        /**
                         * Decodes a BoostAction message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BoostAction
                         * @throws {Error} If the payload 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.retail.v2.Rule.BoostAction;

                        /**
                         * Verifies a BoostAction message.
                         * @param message Plain 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 BoostAction message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BoostAction
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.Rule.BoostAction;

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

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

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

                    /** Properties of a FilterAction. */
                    interface IFilterAction {

                        /** FilterAction filter */
                        filter?: (string|null);
                    }

                    /** Represents a FilterAction. */
                    class FilterAction implements IFilterAction {

                        /**
                         * Constructs a new FilterAction.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.Rule.IFilterAction);

                        /** FilterAction filter. */
                        public filter: string;

                        /**
                         * Creates a new FilterAction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FilterAction instance
                         */
                        public static create(properties?: google.cloud.retail.v2.Rule.IFilterAction): google.cloud.retail.v2.Rule.FilterAction;

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

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

                        /**
                         * Decodes a FilterAction message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FilterAction
                         * @throws {Error} If the payload is not 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.retail.v2.Rule.FilterAction;

                        /**
                         * Decodes a FilterAction message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FilterAction
                         * @throws {Error} If the payload 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.retail.v2.Rule.FilterAction;

                        /**
                         * Verifies a FilterAction message.
                         * @param message Plain 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 FilterAction message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FilterAction
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.Rule.FilterAction;

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

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

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

                    /** Properties of a RedirectAction. */
                    interface IRedirectAction {

                        /** RedirectAction redirectUri */
                        redirectUri?: (string|null);
                    }

                    /** Represents a RedirectAction. */
                    class RedirectAction implements IRedirectAction {

                        /**
                         * Constructs a new RedirectAction.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.Rule.IRedirectAction);

                        /** RedirectAction redirectUri. */
                        public redirectUri: string;

                        /**
                         * Creates a new RedirectAction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RedirectAction instance
                         */
                        public static create(properties?: google.cloud.retail.v2.Rule.IRedirectAction): google.cloud.retail.v2.Rule.RedirectAction;

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

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

                        /**
                         * Decodes a RedirectAction message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RedirectAction
                         * @throws {Error} If the payload is not 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.retail.v2.Rule.RedirectAction;

                        /**
                         * Decodes a RedirectAction message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RedirectAction
                         * @throws {Error} If the payload 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.retail.v2.Rule.RedirectAction;

                        /**
                         * Verifies a RedirectAction message.
                         * @param message Plain 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 RedirectAction message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RedirectAction
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.Rule.RedirectAction;

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

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

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

                    /** Properties of a TwowaySynonymsAction. */
                    interface ITwowaySynonymsAction {

                        /** TwowaySynonymsAction synonyms */
                        synonyms?: (string[]|null);
                    }

                    /** Represents a TwowaySynonymsAction. */
                    class TwowaySynonymsAction implements ITwowaySynonymsAction {

                        /**
                         * Constructs a new TwowaySynonymsAction.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.Rule.ITwowaySynonymsAction);

                        /** TwowaySynonymsAction synonyms. */
                        public synonyms: string[];

                        /**
                         * Creates a new TwowaySynonymsAction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TwowaySynonymsAction instance
                         */
                        public static create(properties?: google.cloud.retail.v2.Rule.ITwowaySynonymsAction): google.cloud.retail.v2.Rule.TwowaySynonymsAction;

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

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

                        /**
                         * Decodes a TwowaySynonymsAction message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TwowaySynonymsAction
                         * @throws {Error} If the payload is not 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.retail.v2.Rule.TwowaySynonymsAction;

                        /**
                         * Decodes a TwowaySynonymsAction message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TwowaySynonymsAction
                         * @throws {Error} If the payload 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.retail.v2.Rule.TwowaySynonymsAction;

                        /**
                         * Verifies a TwowaySynonymsAction message.
                         * @param message Plain 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 TwowaySynonymsAction message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TwowaySynonymsAction
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.Rule.TwowaySynonymsAction;

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

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

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

                    /** Properties of an OnewaySynonymsAction. */
                    interface IOnewaySynonymsAction {

                        /** OnewaySynonymsAction queryTerms */
                        queryTerms?: (string[]|null);

                        /** OnewaySynonymsAction synonyms */
                        synonyms?: (string[]|null);

                        /** OnewaySynonymsAction onewayTerms */
                        onewayTerms?: (string[]|null);
                    }

                    /** Represents an OnewaySynonymsAction. */
                    class OnewaySynonymsAction implements IOnewaySynonymsAction {

                        /**
                         * Constructs a new OnewaySynonymsAction.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.Rule.IOnewaySynonymsAction);

                        /** OnewaySynonymsAction queryTerms. */
                        public queryTerms: string[];

                        /** OnewaySynonymsAction synonyms. */
                        public synonyms: string[];

                        /** OnewaySynonymsAction onewayTerms. */
                        public onewayTerms: string[];

                        /**
                         * Creates a new OnewaySynonymsAction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns OnewaySynonymsAction instance
                         */
                        public static create(properties?: google.cloud.retail.v2.Rule.IOnewaySynonymsAction): google.cloud.retail.v2.Rule.OnewaySynonymsAction;

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

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

                        /**
                         * Decodes an OnewaySynonymsAction message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns OnewaySynonymsAction
                         * @throws {Error} If the payload is not 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.retail.v2.Rule.OnewaySynonymsAction;

                        /**
                         * Decodes an OnewaySynonymsAction message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns OnewaySynonymsAction
                         * @throws {Error} If the payload 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.retail.v2.Rule.OnewaySynonymsAction;

                        /**
                         * Verifies an OnewaySynonymsAction message.
                         * @param message Plain 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 OnewaySynonymsAction message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns OnewaySynonymsAction
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.Rule.OnewaySynonymsAction;

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

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

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

                    /** Properties of a DoNotAssociateAction. */
                    interface IDoNotAssociateAction {

                        /** DoNotAssociateAction queryTerms */
                        queryTerms?: (string[]|null);

                        /** DoNotAssociateAction doNotAssociateTerms */
                        doNotAssociateTerms?: (string[]|null);

                        /** DoNotAssociateAction terms */
                        terms?: (string[]|null);
                    }

                    /** Represents a DoNotAssociateAction. */
                    class DoNotAssociateAction implements IDoNotAssociateAction {

                        /**
                         * Constructs a new DoNotAssociateAction.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.Rule.IDoNotAssociateAction);

                        /** DoNotAssociateAction queryTerms. */
                        public queryTerms: string[];

                        /** DoNotAssociateAction doNotAssociateTerms. */
                        public doNotAssociateTerms: string[];

                        /** DoNotAssociateAction terms. */
                        public terms: string[];

                        /**
                         * Creates a new DoNotAssociateAction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DoNotAssociateAction instance
                         */
                        public static create(properties?: google.cloud.retail.v2.Rule.IDoNotAssociateAction): google.cloud.retail.v2.Rule.DoNotAssociateAction;

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

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

                        /**
                         * Decodes a DoNotAssociateAction message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DoNotAssociateAction
                         * @throws {Error} If the payload is not 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.retail.v2.Rule.DoNotAssociateAction;

                        /**
                         * Decodes a DoNotAssociateAction message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DoNotAssociateAction
                         * @throws {Error} If the payload 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.retail.v2.Rule.DoNotAssociateAction;

                        /**
                         * Verifies a DoNotAssociateAction message.
                         * @param message Plain 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 DoNotAssociateAction message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DoNotAssociateAction
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.Rule.DoNotAssociateAction;

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

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

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

                    /** Properties of a ReplacementAction. */
                    interface IReplacementAction {

                        /** ReplacementAction queryTerms */
                        queryTerms?: (string[]|null);

                        /** ReplacementAction replacementTerm */
                        replacementTerm?: (string|null);

                        /** ReplacementAction term */
                        term?: (string|null);
                    }

                    /** Represents a ReplacementAction. */
                    class ReplacementAction implements IReplacementAction {

                        /**
                         * Constructs a new ReplacementAction.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.Rule.IReplacementAction);

                        /** ReplacementAction queryTerms. */
                        public queryTerms: string[];

                        /** ReplacementAction replacementTerm. */
                        public replacementTerm: string;

                        /** ReplacementAction term. */
                        public term: string;

                        /**
                         * Creates a new ReplacementAction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ReplacementAction instance
                         */
                        public static create(properties?: google.cloud.retail.v2.Rule.IReplacementAction): google.cloud.retail.v2.Rule.ReplacementAction;

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

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

                        /**
                         * Decodes a ReplacementAction message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ReplacementAction
                         * @throws {Error} If the payload is not 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.retail.v2.Rule.ReplacementAction;

                        /**
                         * Decodes a ReplacementAction message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ReplacementAction
                         * @throws {Error} If the payload 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.retail.v2.Rule.ReplacementAction;

                        /**
                         * Verifies a ReplacementAction message.
                         * @param message Plain 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 ReplacementAction message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ReplacementAction
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.Rule.ReplacementAction;

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

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

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

                    /** Properties of an IgnoreAction. */
                    interface IIgnoreAction {

                        /** IgnoreAction ignoreTerms */
                        ignoreTerms?: (string[]|null);
                    }

                    /** Represents an IgnoreAction. */
                    class IgnoreAction implements IIgnoreAction {

                        /**
                         * Constructs a new IgnoreAction.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.Rule.IIgnoreAction);

                        /** IgnoreAction ignoreTerms. */
                        public ignoreTerms: string[];

                        /**
                         * Creates a new IgnoreAction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns IgnoreAction instance
                         */
                        public static create(properties?: google.cloud.retail.v2.Rule.IIgnoreAction): google.cloud.retail.v2.Rule.IgnoreAction;

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

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

                        /**
                         * Decodes an IgnoreAction message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns IgnoreAction
                         * @throws {Error} If the payload is not 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.retail.v2.Rule.IgnoreAction;

                        /**
                         * Decodes an IgnoreAction message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns IgnoreAction
                         * @throws {Error} If the payload 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.retail.v2.Rule.IgnoreAction;

                        /**
                         * Verifies an IgnoreAction message.
                         * @param message Plain 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 IgnoreAction message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns IgnoreAction
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.Rule.IgnoreAction;

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

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

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

                    /** Properties of a ForceReturnFacetAction. */
                    interface IForceReturnFacetAction {

                        /** ForceReturnFacetAction facetPositionAdjustments */
                        facetPositionAdjustments?: (google.cloud.retail.v2.Rule.ForceReturnFacetAction.IFacetPositionAdjustment[]|null);
                    }

                    /** Represents a ForceReturnFacetAction. */
                    class ForceReturnFacetAction implements IForceReturnFacetAction {

                        /**
                         * Constructs a new ForceReturnFacetAction.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.Rule.IForceReturnFacetAction);

                        /** ForceReturnFacetAction facetPositionAdjustments. */
                        public facetPositionAdjustments: google.cloud.retail.v2.Rule.ForceReturnFacetAction.IFacetPositionAdjustment[];

                        /**
                         * Creates a new ForceReturnFacetAction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ForceReturnFacetAction instance
                         */
                        public static create(properties?: google.cloud.retail.v2.Rule.IForceReturnFacetAction): google.cloud.retail.v2.Rule.ForceReturnFacetAction;

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

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

                        /**
                         * Decodes a ForceReturnFacetAction message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ForceReturnFacetAction
                         * @throws {Error} If the payload is not 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.retail.v2.Rule.ForceReturnFacetAction;

                        /**
                         * Decodes a ForceReturnFacetAction message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ForceReturnFacetAction
                         * @throws {Error} If the payload 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.retail.v2.Rule.ForceReturnFacetAction;

                        /**
                         * Verifies a ForceReturnFacetAction message.
                         * @param message Plain 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 ForceReturnFacetAction message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ForceReturnFacetAction
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.Rule.ForceReturnFacetAction;

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

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

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

                    namespace ForceReturnFacetAction {

                        /** Properties of a FacetPositionAdjustment. */
                        interface IFacetPositionAdjustment {

                            /** FacetPositionAdjustment attributeName */
                            attributeName?: (string|null);

                            /** FacetPositionAdjustment position */
                            position?: (number|null);
                        }

                        /** Represents a FacetPositionAdjustment. */
                        class FacetPositionAdjustment implements IFacetPositionAdjustment {

                            /**
                             * Constructs a new FacetPositionAdjustment.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2.Rule.ForceReturnFacetAction.IFacetPositionAdjustment);

                            /** FacetPositionAdjustment attributeName. */
                            public attributeName: string;

                            /** FacetPositionAdjustment position. */
                            public position: number;

                            /**
                             * Creates a new FacetPositionAdjustment instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns FacetPositionAdjustment instance
                             */
                            public static create(properties?: google.cloud.retail.v2.Rule.ForceReturnFacetAction.IFacetPositionAdjustment): google.cloud.retail.v2.Rule.ForceReturnFacetAction.FacetPositionAdjustment;

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

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

                            /**
                             * Decodes a FacetPositionAdjustment message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns FacetPositionAdjustment
                             * @throws {Error} If the payload is not 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.retail.v2.Rule.ForceReturnFacetAction.FacetPositionAdjustment;

                            /**
                             * Decodes a FacetPositionAdjustment message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns FacetPositionAdjustment
                             * @throws {Error} If the payload 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.retail.v2.Rule.ForceReturnFacetAction.FacetPositionAdjustment;

                            /**
                             * Verifies a FacetPositionAdjustment message.
                             * @param message Plain 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 FacetPositionAdjustment message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns FacetPositionAdjustment
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.Rule.ForceReturnFacetAction.FacetPositionAdjustment;

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

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

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

                    /** Properties of a RemoveFacetAction. */
                    interface IRemoveFacetAction {

                        /** RemoveFacetAction attributeNames */
                        attributeNames?: (string[]|null);
                    }

                    /** Represents a RemoveFacetAction. */
                    class RemoveFacetAction implements IRemoveFacetAction {

                        /**
                         * Constructs a new RemoveFacetAction.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.Rule.IRemoveFacetAction);

                        /** RemoveFacetAction attributeNames. */
                        public attributeNames: string[];

                        /**
                         * Creates a new RemoveFacetAction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RemoveFacetAction instance
                         */
                        public static create(properties?: google.cloud.retail.v2.Rule.IRemoveFacetAction): google.cloud.retail.v2.Rule.RemoveFacetAction;

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

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

                        /**
                         * Decodes a RemoveFacetAction message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RemoveFacetAction
                         * @throws {Error} If the payload is not 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.retail.v2.Rule.RemoveFacetAction;

                        /**
                         * Decodes a RemoveFacetAction message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RemoveFacetAction
                         * @throws {Error} If the payload 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.retail.v2.Rule.RemoveFacetAction;

                        /**
                         * Verifies a RemoveFacetAction message.
                         * @param message Plain 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 RemoveFacetAction message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RemoveFacetAction
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.Rule.RemoveFacetAction;

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

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

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

                    /** Properties of a PinAction. */
                    interface IPinAction {

                        /** PinAction pinMap */
                        pinMap?: ({ [k: string]: string }|null);
                    }

                    /** Represents a PinAction. */
                    class PinAction implements IPinAction {

                        /**
                         * Constructs a new PinAction.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.Rule.IPinAction);

                        /** PinAction pinMap. */
                        public pinMap: { [k: string]: string };

                        /**
                         * Creates a new PinAction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PinAction instance
                         */
                        public static create(properties?: google.cloud.retail.v2.Rule.IPinAction): google.cloud.retail.v2.Rule.PinAction;

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

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

                        /**
                         * Decodes a PinAction message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PinAction
                         * @throws {Error} If the payload is not 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.retail.v2.Rule.PinAction;

                        /**
                         * Decodes a PinAction message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PinAction
                         * @throws {Error} If the payload 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.retail.v2.Rule.PinAction;

                        /**
                         * Verifies a PinAction message.
                         * @param message Plain 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 PinAction message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PinAction
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.Rule.PinAction;

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

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

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

                /** Properties of an Audience. */
                interface IAudience {

                    /** Audience genders */
                    genders?: (string[]|null);

                    /** Audience ageGroups */
                    ageGroups?: (string[]|null);
                }

                /** Represents an Audience. */
                class Audience implements IAudience {

                    /**
                     * Constructs a new Audience.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IAudience);

                    /** Audience genders. */
                    public genders: string[];

                    /** Audience ageGroups. */
                    public ageGroups: string[];

                    /**
                     * Creates a new Audience instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Audience instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IAudience): google.cloud.retail.v2.Audience;

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

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

                    /**
                     * Decodes an Audience message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Audience
                     * @throws {Error} If the payload is not 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.retail.v2.Audience;

                    /**
                     * Decodes an Audience message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Audience
                     * @throws {Error} If the payload 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.retail.v2.Audience;

                    /**
                     * Verifies an Audience message.
                     * @param message Plain 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 Audience message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Audience
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.Audience;

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

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

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

                /** Properties of a ColorInfo. */
                interface IColorInfo {

                    /** ColorInfo colorFamilies */
                    colorFamilies?: (string[]|null);

                    /** ColorInfo colors */
                    colors?: (string[]|null);
                }

                /** Represents a ColorInfo. */
                class ColorInfo implements IColorInfo {

                    /**
                     * Constructs a new ColorInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IColorInfo);

                    /** ColorInfo colorFamilies. */
                    public colorFamilies: string[];

                    /** ColorInfo colors. */
                    public colors: string[];

                    /**
                     * Creates a new ColorInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ColorInfo instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IColorInfo): google.cloud.retail.v2.ColorInfo;

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

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

                    /**
                     * Decodes a ColorInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ColorInfo
                     * @throws {Error} If the payload is not 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.retail.v2.ColorInfo;

                    /**
                     * Decodes a ColorInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ColorInfo
                     * @throws {Error} If the payload 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.retail.v2.ColorInfo;

                    /**
                     * Verifies a ColorInfo message.
                     * @param message Plain 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 ColorInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ColorInfo
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ColorInfo;

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

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

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

                /** Properties of a CustomAttribute. */
                interface ICustomAttribute {

                    /** CustomAttribute text */
                    text?: (string[]|null);

                    /** CustomAttribute numbers */
                    numbers?: (number[]|null);

                    /** CustomAttribute searchable */
                    searchable?: (boolean|null);

                    /** CustomAttribute indexable */
                    indexable?: (boolean|null);
                }

                /** Represents a CustomAttribute. */
                class CustomAttribute implements ICustomAttribute {

                    /**
                     * Constructs a new CustomAttribute.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.ICustomAttribute);

                    /** CustomAttribute text. */
                    public text: string[];

                    /** CustomAttribute numbers. */
                    public numbers: number[];

                    /** CustomAttribute searchable. */
                    public searchable?: (boolean|null);

                    /** CustomAttribute indexable. */
                    public indexable?: (boolean|null);

                    /**
                     * Creates a new CustomAttribute instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CustomAttribute instance
                     */
                    public static create(properties?: google.cloud.retail.v2.ICustomAttribute): google.cloud.retail.v2.CustomAttribute;

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

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

                    /**
                     * Decodes a CustomAttribute message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CustomAttribute
                     * @throws {Error} If the payload is not 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.retail.v2.CustomAttribute;

                    /**
                     * Decodes a CustomAttribute message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CustomAttribute
                     * @throws {Error} If the payload 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.retail.v2.CustomAttribute;

                    /**
                     * Verifies a CustomAttribute message.
                     * @param message Plain 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 CustomAttribute message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CustomAttribute
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.CustomAttribute;

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

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

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

                /** Properties of a FulfillmentInfo. */
                interface IFulfillmentInfo {

                    /** FulfillmentInfo type */
                    type?: (string|null);

                    /** FulfillmentInfo placeIds */
                    placeIds?: (string[]|null);
                }

                /** Represents a FulfillmentInfo. */
                class FulfillmentInfo implements IFulfillmentInfo {

                    /**
                     * Constructs a new FulfillmentInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IFulfillmentInfo);

                    /** FulfillmentInfo type. */
                    public type: string;

                    /** FulfillmentInfo placeIds. */
                    public placeIds: string[];

                    /**
                     * Creates a new FulfillmentInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns FulfillmentInfo instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IFulfillmentInfo): google.cloud.retail.v2.FulfillmentInfo;

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

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

                    /**
                     * Decodes a FulfillmentInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns FulfillmentInfo
                     * @throws {Error} If the payload is not 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.retail.v2.FulfillmentInfo;

                    /**
                     * Decodes a FulfillmentInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns FulfillmentInfo
                     * @throws {Error} If the payload 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.retail.v2.FulfillmentInfo;

                    /**
                     * Verifies a FulfillmentInfo message.
                     * @param message Plain 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 FulfillmentInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns FulfillmentInfo
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.FulfillmentInfo;

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

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

                    /**
                     * Gets the default type url for FulfillmentInfo
                     * @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 uri */
                    uri?: (string|null);

                    /** Image height */
                    height?: (number|null);

                    /** Image width */
                    width?: (number|null);
                }

                /** Represents an Image. */
                class Image implements IImage {

                    /**
                     * Constructs a new Image.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IImage);

                    /** Image uri. */
                    public uri: string;

                    /** Image height. */
                    public height: number;

                    /** Image width. */
                    public width: number;

                    /**
                     * Creates a new Image instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Image instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IImage): google.cloud.retail.v2.Image;

                    /**
                     * Encodes the specified Image message. Does not implicitly {@link google.cloud.retail.v2.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.retail.v2.IImage, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Image message, length delimited. Does not implicitly {@link google.cloud.retail.v2.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.retail.v2.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.retail.v2.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.retail.v2.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.retail.v2.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.retail.v2.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 an Interval. */
                interface IInterval {

                    /** Interval minimum */
                    minimum?: (number|null);

                    /** Interval exclusiveMinimum */
                    exclusiveMinimum?: (number|null);

                    /** Interval maximum */
                    maximum?: (number|null);

                    /** Interval exclusiveMaximum */
                    exclusiveMaximum?: (number|null);
                }

                /** Represents an Interval. */
                class Interval implements IInterval {

                    /**
                     * Constructs a new Interval.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IInterval);

                    /** Interval minimum. */
                    public minimum?: (number|null);

                    /** Interval exclusiveMinimum. */
                    public exclusiveMinimum?: (number|null);

                    /** Interval maximum. */
                    public maximum?: (number|null);

                    /** Interval exclusiveMaximum. */
                    public exclusiveMaximum?: (number|null);

                    /** Interval min. */
                    public min?: ("minimum"|"exclusiveMinimum");

                    /** Interval max. */
                    public max?: ("maximum"|"exclusiveMaximum");

                    /**
                     * Creates a new Interval instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Interval instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IInterval): google.cloud.retail.v2.Interval;

                    /**
                     * Encodes the specified Interval message. Does not implicitly {@link google.cloud.retail.v2.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.cloud.retail.v2.IInterval, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Interval message, length delimited. Does not implicitly {@link google.cloud.retail.v2.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.cloud.retail.v2.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.cloud.retail.v2.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.cloud.retail.v2.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.cloud.retail.v2.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.cloud.retail.v2.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 a PriceInfo. */
                interface IPriceInfo {

                    /** PriceInfo currencyCode */
                    currencyCode?: (string|null);

                    /** PriceInfo price */
                    price?: (number|null);

                    /** PriceInfo originalPrice */
                    originalPrice?: (number|null);

                    /** PriceInfo cost */
                    cost?: (number|null);

                    /** PriceInfo priceEffectiveTime */
                    priceEffectiveTime?: (google.protobuf.ITimestamp|null);

                    /** PriceInfo priceExpireTime */
                    priceExpireTime?: (google.protobuf.ITimestamp|null);

                    /** PriceInfo priceRange */
                    priceRange?: (google.cloud.retail.v2.PriceInfo.IPriceRange|null);
                }

                /** Represents a PriceInfo. */
                class PriceInfo implements IPriceInfo {

                    /**
                     * Constructs a new PriceInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IPriceInfo);

                    /** PriceInfo currencyCode. */
                    public currencyCode: string;

                    /** PriceInfo price. */
                    public price: number;

                    /** PriceInfo originalPrice. */
                    public originalPrice: number;

                    /** PriceInfo cost. */
                    public cost: number;

                    /** PriceInfo priceEffectiveTime. */
                    public priceEffectiveTime?: (google.protobuf.ITimestamp|null);

                    /** PriceInfo priceExpireTime. */
                    public priceExpireTime?: (google.protobuf.ITimestamp|null);

                    /** PriceInfo priceRange. */
                    public priceRange?: (google.cloud.retail.v2.PriceInfo.IPriceRange|null);

                    /**
                     * Creates a new PriceInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PriceInfo instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IPriceInfo): google.cloud.retail.v2.PriceInfo;

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

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

                    /**
                     * Decodes a PriceInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PriceInfo
                     * @throws {Error} If the payload is not 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.retail.v2.PriceInfo;

                    /**
                     * Decodes a PriceInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PriceInfo
                     * @throws {Error} If the payload 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.retail.v2.PriceInfo;

                    /**
                     * Verifies a PriceInfo message.
                     * @param message Plain 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 PriceInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PriceInfo
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.PriceInfo;

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

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

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

                namespace PriceInfo {

                    /** Properties of a PriceRange. */
                    interface IPriceRange {

                        /** PriceRange price */
                        price?: (google.cloud.retail.v2.IInterval|null);

                        /** PriceRange originalPrice */
                        originalPrice?: (google.cloud.retail.v2.IInterval|null);
                    }

                    /** Represents a PriceRange. */
                    class PriceRange implements IPriceRange {

                        /**
                         * Constructs a new PriceRange.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.PriceInfo.IPriceRange);

                        /** PriceRange price. */
                        public price?: (google.cloud.retail.v2.IInterval|null);

                        /** PriceRange originalPrice. */
                        public originalPrice?: (google.cloud.retail.v2.IInterval|null);

                        /**
                         * Creates a new PriceRange instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PriceRange instance
                         */
                        public static create(properties?: google.cloud.retail.v2.PriceInfo.IPriceRange): google.cloud.retail.v2.PriceInfo.PriceRange;

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

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

                        /**
                         * Decodes a PriceRange message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PriceRange
                         * @throws {Error} If the payload is not 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.retail.v2.PriceInfo.PriceRange;

                        /**
                         * Decodes a PriceRange message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PriceRange
                         * @throws {Error} If the payload 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.retail.v2.PriceInfo.PriceRange;

                        /**
                         * Verifies a PriceRange message.
                         * @param message Plain 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 PriceRange message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PriceRange
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.PriceInfo.PriceRange;

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

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

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

                /** Properties of a Rating. */
                interface IRating {

                    /** Rating ratingCount */
                    ratingCount?: (number|null);

                    /** Rating averageRating */
                    averageRating?: (number|null);

                    /** Rating ratingHistogram */
                    ratingHistogram?: (number[]|null);
                }

                /** Represents a Rating. */
                class Rating implements IRating {

                    /**
                     * Constructs a new Rating.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IRating);

                    /** Rating ratingCount. */
                    public ratingCount: number;

                    /** Rating averageRating. */
                    public averageRating: number;

                    /** Rating ratingHistogram. */
                    public ratingHistogram: number[];

                    /**
                     * Creates a new Rating instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Rating instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IRating): google.cloud.retail.v2.Rating;

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

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

                    /**
                     * Decodes a Rating message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Rating
                     * @throws {Error} If the payload is not 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.retail.v2.Rating;

                    /**
                     * Decodes a Rating message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Rating
                     * @throws {Error} If the payload 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.retail.v2.Rating;

                    /**
                     * Verifies a Rating message.
                     * @param message Plain 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 Rating message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Rating
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.Rating;

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

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

                    /**
                     * Gets the default type url for Rating
                     * @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 userId */
                    userId?: (string|null);

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

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

                    /** UserInfo directUserRequest */
                    directUserRequest?: (boolean|null);
                }

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

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

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

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

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

                    /** UserInfo directUserRequest. */
                    public directUserRequest: boolean;

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

                    /**
                     * Encodes the specified UserInfo message. Does not implicitly {@link google.cloud.retail.v2.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.retail.v2.IUserInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UserInfo message, length delimited. Does not implicitly {@link google.cloud.retail.v2.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.retail.v2.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.retail.v2.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.retail.v2.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.retail.v2.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.retail.v2.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 a LocalInventory. */
                interface ILocalInventory {

                    /** LocalInventory placeId */
                    placeId?: (string|null);

                    /** LocalInventory priceInfo */
                    priceInfo?: (google.cloud.retail.v2.IPriceInfo|null);

                    /** LocalInventory attributes */
                    attributes?: ({ [k: string]: google.cloud.retail.v2.ICustomAttribute }|null);

                    /** LocalInventory fulfillmentTypes */
                    fulfillmentTypes?: (string[]|null);
                }

                /** Represents a LocalInventory. */
                class LocalInventory implements ILocalInventory {

                    /**
                     * Constructs a new LocalInventory.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.ILocalInventory);

                    /** LocalInventory placeId. */
                    public placeId: string;

                    /** LocalInventory priceInfo. */
                    public priceInfo?: (google.cloud.retail.v2.IPriceInfo|null);

                    /** LocalInventory attributes. */
                    public attributes: { [k: string]: google.cloud.retail.v2.ICustomAttribute };

                    /** LocalInventory fulfillmentTypes. */
                    public fulfillmentTypes: string[];

                    /**
                     * Creates a new LocalInventory instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns LocalInventory instance
                     */
                    public static create(properties?: google.cloud.retail.v2.ILocalInventory): google.cloud.retail.v2.LocalInventory;

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

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

                    /**
                     * Decodes a LocalInventory message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns LocalInventory
                     * @throws {Error} If the payload is not 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.retail.v2.LocalInventory;

                    /**
                     * Decodes a LocalInventory message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns LocalInventory
                     * @throws {Error} If the payload 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.retail.v2.LocalInventory;

                    /**
                     * Verifies a LocalInventory message.
                     * @param message Plain 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 LocalInventory message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns LocalInventory
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.LocalInventory;

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

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

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

                /** Properties of a PinControlMetadata. */
                interface IPinControlMetadata {

                    /** PinControlMetadata allMatchedPins */
                    allMatchedPins?: ({ [k: string]: google.cloud.retail.v2.PinControlMetadata.IProductPins }|null);

                    /** PinControlMetadata droppedPins */
                    droppedPins?: ({ [k: string]: google.cloud.retail.v2.PinControlMetadata.IProductPins }|null);
                }

                /** Represents a PinControlMetadata. */
                class PinControlMetadata implements IPinControlMetadata {

                    /**
                     * Constructs a new PinControlMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IPinControlMetadata);

                    /** PinControlMetadata allMatchedPins. */
                    public allMatchedPins: { [k: string]: google.cloud.retail.v2.PinControlMetadata.IProductPins };

                    /** PinControlMetadata droppedPins. */
                    public droppedPins: { [k: string]: google.cloud.retail.v2.PinControlMetadata.IProductPins };

                    /**
                     * Creates a new PinControlMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PinControlMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IPinControlMetadata): google.cloud.retail.v2.PinControlMetadata;

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

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

                    /**
                     * Decodes a PinControlMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PinControlMetadata
                     * @throws {Error} If the payload is not 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.retail.v2.PinControlMetadata;

                    /**
                     * Decodes a PinControlMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PinControlMetadata
                     * @throws {Error} If the payload 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.retail.v2.PinControlMetadata;

                    /**
                     * Verifies a PinControlMetadata message.
                     * @param message Plain 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 PinControlMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PinControlMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.PinControlMetadata;

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

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

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

                namespace PinControlMetadata {

                    /** Properties of a ProductPins. */
                    interface IProductPins {

                        /** ProductPins productId */
                        productId?: (string[]|null);
                    }

                    /** Represents a ProductPins. */
                    class ProductPins implements IProductPins {

                        /**
                         * Constructs a new ProductPins.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.PinControlMetadata.IProductPins);

                        /** ProductPins productId. */
                        public productId: string[];

                        /**
                         * Creates a new ProductPins instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductPins instance
                         */
                        public static create(properties?: google.cloud.retail.v2.PinControlMetadata.IProductPins): google.cloud.retail.v2.PinControlMetadata.ProductPins;

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

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

                        /**
                         * Decodes a ProductPins message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProductPins
                         * @throws {Error} If the payload is not 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.retail.v2.PinControlMetadata.ProductPins;

                        /**
                         * Decodes a ProductPins message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductPins
                         * @throws {Error} If the payload 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.retail.v2.PinControlMetadata.ProductPins;

                        /**
                         * Verifies a ProductPins message.
                         * @param message Plain 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 ProductPins message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProductPins
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.PinControlMetadata.ProductPins;

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

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

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

                /** Properties of a StringList. */
                interface IStringList {

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

                /** Represents a StringList. */
                class StringList implements IStringList {

                    /**
                     * Constructs a new StringList.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IStringList);

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

                    /**
                     * Creates a new StringList instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns StringList instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IStringList): google.cloud.retail.v2.StringList;

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

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

                    /**
                     * Decodes a StringList message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns StringList
                     * @throws {Error} If the payload is not 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.retail.v2.StringList;

                    /**
                     * Decodes a StringList message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns StringList
                     * @throws {Error} If the payload 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.retail.v2.StringList;

                    /**
                     * Verifies a StringList message.
                     * @param message Plain 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 StringList message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns StringList
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.StringList;

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

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

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

                /** Properties of a DoubleList. */
                interface IDoubleList {

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

                /** Represents a DoubleList. */
                class DoubleList implements IDoubleList {

                    /**
                     * Constructs a new DoubleList.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IDoubleList);

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

                    /**
                     * Creates a new DoubleList instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DoubleList instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IDoubleList): google.cloud.retail.v2.DoubleList;

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

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

                    /**
                     * Decodes a DoubleList message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DoubleList
                     * @throws {Error} If the payload is not 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.retail.v2.DoubleList;

                    /**
                     * Decodes a DoubleList message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DoubleList
                     * @throws {Error} If the payload 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.retail.v2.DoubleList;

                    /**
                     * Verifies a DoubleList message.
                     * @param message Plain 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 DoubleList message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DoubleList
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.DoubleList;

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

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

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

                /** Properties of a GcsSource. */
                interface IGcsSource {

                    /** GcsSource inputUris */
                    inputUris?: (string[]|null);

                    /** GcsSource dataSchema */
                    dataSchema?: (string|null);
                }

                /** Represents a GcsSource. */
                class GcsSource implements IGcsSource {

                    /**
                     * Constructs a new GcsSource.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IGcsSource);

                    /** GcsSource inputUris. */
                    public inputUris: string[];

                    /** GcsSource dataSchema. */
                    public dataSchema: string;

                    /**
                     * Creates a new GcsSource instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GcsSource instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IGcsSource): google.cloud.retail.v2.GcsSource;

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

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

                    /**
                     * Decodes a GcsSource message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GcsSource
                     * @throws {Error} If the payload is not 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.retail.v2.GcsSource;

                    /**
                     * Decodes a GcsSource message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GcsSource
                     * @throws {Error} If the payload 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.retail.v2.GcsSource;

                    /**
                     * Verifies a GcsSource message.
                     * @param message Plain 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 GcsSource message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GcsSource
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.GcsSource;

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

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

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

                /** Properties of a BigQuerySource. */
                interface IBigQuerySource {

                    /** BigQuerySource partitionDate */
                    partitionDate?: (google.type.IDate|null);

                    /** BigQuerySource projectId */
                    projectId?: (string|null);

                    /** BigQuerySource datasetId */
                    datasetId?: (string|null);

                    /** BigQuerySource tableId */
                    tableId?: (string|null);

                    /** BigQuerySource gcsStagingDir */
                    gcsStagingDir?: (string|null);

                    /** BigQuerySource dataSchema */
                    dataSchema?: (string|null);
                }

                /** Represents a BigQuerySource. */
                class BigQuerySource implements IBigQuerySource {

                    /**
                     * Constructs a new BigQuerySource.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IBigQuerySource);

                    /** BigQuerySource partitionDate. */
                    public partitionDate?: (google.type.IDate|null);

                    /** BigQuerySource projectId. */
                    public projectId: string;

                    /** BigQuerySource datasetId. */
                    public datasetId: string;

                    /** BigQuerySource tableId. */
                    public tableId: string;

                    /** BigQuerySource gcsStagingDir. */
                    public gcsStagingDir: string;

                    /** BigQuerySource dataSchema. */
                    public dataSchema: string;

                    /** BigQuerySource partition. */
                    public partition?: "partitionDate";

                    /**
                     * Creates a new BigQuerySource instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns BigQuerySource instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IBigQuerySource): google.cloud.retail.v2.BigQuerySource;

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

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

                    /**
                     * Decodes a BigQuerySource message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns BigQuerySource
                     * @throws {Error} If the payload is not 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.retail.v2.BigQuerySource;

                    /**
                     * Decodes a BigQuerySource message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns BigQuerySource
                     * @throws {Error} If the payload 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.retail.v2.BigQuerySource;

                    /**
                     * Verifies a BigQuerySource message.
                     * @param message Plain 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 BigQuerySource message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns BigQuerySource
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.BigQuerySource;

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

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

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

                /** Properties of a ProductInlineSource. */
                interface IProductInlineSource {

                    /** ProductInlineSource products */
                    products?: (google.cloud.retail.v2.IProduct[]|null);
                }

                /** Represents a ProductInlineSource. */
                class ProductInlineSource implements IProductInlineSource {

                    /**
                     * Constructs a new ProductInlineSource.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IProductInlineSource);

                    /** ProductInlineSource products. */
                    public products: google.cloud.retail.v2.IProduct[];

                    /**
                     * Creates a new ProductInlineSource instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ProductInlineSource instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IProductInlineSource): google.cloud.retail.v2.ProductInlineSource;

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

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

                    /**
                     * Decodes a ProductInlineSource message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ProductInlineSource
                     * @throws {Error} If the payload is not 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.retail.v2.ProductInlineSource;

                    /**
                     * Decodes a ProductInlineSource message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ProductInlineSource
                     * @throws {Error} If the payload 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.retail.v2.ProductInlineSource;

                    /**
                     * Verifies a ProductInlineSource message.
                     * @param message Plain 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 ProductInlineSource message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ProductInlineSource
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ProductInlineSource;

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

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

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

                /** Properties of a UserEventInlineSource. */
                interface IUserEventInlineSource {

                    /** UserEventInlineSource userEvents */
                    userEvents?: (google.cloud.retail.v2.IUserEvent[]|null);
                }

                /** Represents a UserEventInlineSource. */
                class UserEventInlineSource implements IUserEventInlineSource {

                    /**
                     * Constructs a new UserEventInlineSource.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IUserEventInlineSource);

                    /** UserEventInlineSource userEvents. */
                    public userEvents: google.cloud.retail.v2.IUserEvent[];

                    /**
                     * Creates a new UserEventInlineSource instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UserEventInlineSource instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IUserEventInlineSource): google.cloud.retail.v2.UserEventInlineSource;

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

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

                    /**
                     * Decodes a UserEventInlineSource message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UserEventInlineSource
                     * @throws {Error} If the payload is not 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.retail.v2.UserEventInlineSource;

                    /**
                     * Decodes a UserEventInlineSource message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UserEventInlineSource
                     * @throws {Error} If the payload 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.retail.v2.UserEventInlineSource;

                    /**
                     * Verifies a UserEventInlineSource message.
                     * @param message Plain 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 UserEventInlineSource message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UserEventInlineSource
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.UserEventInlineSource;

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

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

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

                /** Properties of an ImportErrorsConfig. */
                interface IImportErrorsConfig {

                    /** ImportErrorsConfig gcsPrefix */
                    gcsPrefix?: (string|null);
                }

                /** Represents an ImportErrorsConfig. */
                class ImportErrorsConfig implements IImportErrorsConfig {

                    /**
                     * Constructs a new ImportErrorsConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IImportErrorsConfig);

                    /** ImportErrorsConfig gcsPrefix. */
                    public gcsPrefix?: (string|null);

                    /** ImportErrorsConfig destination. */
                    public destination?: "gcsPrefix";

                    /**
                     * Creates a new ImportErrorsConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ImportErrorsConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IImportErrorsConfig): google.cloud.retail.v2.ImportErrorsConfig;

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

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

                    /**
                     * Decodes an ImportErrorsConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ImportErrorsConfig
                     * @throws {Error} If the payload is not 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.retail.v2.ImportErrorsConfig;

                    /**
                     * Decodes an ImportErrorsConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ImportErrorsConfig
                     * @throws {Error} If the payload 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.retail.v2.ImportErrorsConfig;

                    /**
                     * Verifies an ImportErrorsConfig message.
                     * @param message Plain 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 ImportErrorsConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ImportErrorsConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ImportErrorsConfig;

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

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

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

                /** Properties of an ImportProductsRequest. */
                interface IImportProductsRequest {

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

                    /** ImportProductsRequest requestId */
                    requestId?: (string|null);

                    /** ImportProductsRequest inputConfig */
                    inputConfig?: (google.cloud.retail.v2.IProductInputConfig|null);

                    /** ImportProductsRequest errorsConfig */
                    errorsConfig?: (google.cloud.retail.v2.IImportErrorsConfig|null);

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

                    /** ImportProductsRequest reconciliationMode */
                    reconciliationMode?: (google.cloud.retail.v2.ImportProductsRequest.ReconciliationMode|keyof typeof google.cloud.retail.v2.ImportProductsRequest.ReconciliationMode|null);

                    /** ImportProductsRequest notificationPubsubTopic */
                    notificationPubsubTopic?: (string|null);
                }

                /** Represents an ImportProductsRequest. */
                class ImportProductsRequest implements IImportProductsRequest {

                    /**
                     * Constructs a new ImportProductsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IImportProductsRequest);

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

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

                    /** ImportProductsRequest inputConfig. */
                    public inputConfig?: (google.cloud.retail.v2.IProductInputConfig|null);

                    /** ImportProductsRequest errorsConfig. */
                    public errorsConfig?: (google.cloud.retail.v2.IImportErrorsConfig|null);

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

                    /** ImportProductsRequest reconciliationMode. */
                    public reconciliationMode: (google.cloud.retail.v2.ImportProductsRequest.ReconciliationMode|keyof typeof google.cloud.retail.v2.ImportProductsRequest.ReconciliationMode);

                    /** ImportProductsRequest notificationPubsubTopic. */
                    public notificationPubsubTopic: string;

                    /**
                     * Creates a new ImportProductsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ImportProductsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IImportProductsRequest): google.cloud.retail.v2.ImportProductsRequest;

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

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

                    /**
                     * Decodes an ImportProductsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ImportProductsRequest
                     * @throws {Error} If the payload is not 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.retail.v2.ImportProductsRequest;

                    /**
                     * Decodes an ImportProductsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ImportProductsRequest
                     * @throws {Error} If the payload 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.retail.v2.ImportProductsRequest;

                    /**
                     * Verifies an ImportProductsRequest message.
                     * @param message Plain 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 ImportProductsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ImportProductsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ImportProductsRequest;

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

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

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

                namespace ImportProductsRequest {

                    /** ReconciliationMode enum. */
                    enum ReconciliationMode {
                        RECONCILIATION_MODE_UNSPECIFIED = 0,
                        INCREMENTAL = 1,
                        FULL = 2
                    }
                }

                /** Properties of an ImportUserEventsRequest. */
                interface IImportUserEventsRequest {

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

                    /** ImportUserEventsRequest inputConfig */
                    inputConfig?: (google.cloud.retail.v2.IUserEventInputConfig|null);

                    /** ImportUserEventsRequest errorsConfig */
                    errorsConfig?: (google.cloud.retail.v2.IImportErrorsConfig|null);
                }

                /** Represents an ImportUserEventsRequest. */
                class ImportUserEventsRequest implements IImportUserEventsRequest {

                    /**
                     * Constructs a new ImportUserEventsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IImportUserEventsRequest);

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

                    /** ImportUserEventsRequest inputConfig. */
                    public inputConfig?: (google.cloud.retail.v2.IUserEventInputConfig|null);

                    /** ImportUserEventsRequest errorsConfig. */
                    public errorsConfig?: (google.cloud.retail.v2.IImportErrorsConfig|null);

                    /**
                     * Creates a new ImportUserEventsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ImportUserEventsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IImportUserEventsRequest): google.cloud.retail.v2.ImportUserEventsRequest;

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

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

                    /**
                     * Decodes an ImportUserEventsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ImportUserEventsRequest
                     * @throws {Error} If the payload is not 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.retail.v2.ImportUserEventsRequest;

                    /**
                     * Decodes an ImportUserEventsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ImportUserEventsRequest
                     * @throws {Error} If the payload 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.retail.v2.ImportUserEventsRequest;

                    /**
                     * Verifies an ImportUserEventsRequest message.
                     * @param message Plain 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 ImportUserEventsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ImportUserEventsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ImportUserEventsRequest;

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

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

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

                /** Properties of an ImportCompletionDataRequest. */
                interface IImportCompletionDataRequest {

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

                    /** ImportCompletionDataRequest inputConfig */
                    inputConfig?: (google.cloud.retail.v2.ICompletionDataInputConfig|null);

                    /** ImportCompletionDataRequest notificationPubsubTopic */
                    notificationPubsubTopic?: (string|null);
                }

                /** Represents an ImportCompletionDataRequest. */
                class ImportCompletionDataRequest implements IImportCompletionDataRequest {

                    /**
                     * Constructs a new ImportCompletionDataRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IImportCompletionDataRequest);

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

                    /** ImportCompletionDataRequest inputConfig. */
                    public inputConfig?: (google.cloud.retail.v2.ICompletionDataInputConfig|null);

                    /** ImportCompletionDataRequest notificationPubsubTopic. */
                    public notificationPubsubTopic: string;

                    /**
                     * Creates a new ImportCompletionDataRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ImportCompletionDataRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IImportCompletionDataRequest): google.cloud.retail.v2.ImportCompletionDataRequest;

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

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

                    /**
                     * Decodes an ImportCompletionDataRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ImportCompletionDataRequest
                     * @throws {Error} If the payload is not 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.retail.v2.ImportCompletionDataRequest;

                    /**
                     * Decodes an ImportCompletionDataRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ImportCompletionDataRequest
                     * @throws {Error} If the payload 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.retail.v2.ImportCompletionDataRequest;

                    /**
                     * Verifies an ImportCompletionDataRequest message.
                     * @param message Plain 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 ImportCompletionDataRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ImportCompletionDataRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ImportCompletionDataRequest;

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

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

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

                /** Properties of a ProductInputConfig. */
                interface IProductInputConfig {

                    /** ProductInputConfig productInlineSource */
                    productInlineSource?: (google.cloud.retail.v2.IProductInlineSource|null);

                    /** ProductInputConfig gcsSource */
                    gcsSource?: (google.cloud.retail.v2.IGcsSource|null);

                    /** ProductInputConfig bigQuerySource */
                    bigQuerySource?: (google.cloud.retail.v2.IBigQuerySource|null);
                }

                /** Represents a ProductInputConfig. */
                class ProductInputConfig implements IProductInputConfig {

                    /**
                     * Constructs a new ProductInputConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IProductInputConfig);

                    /** ProductInputConfig productInlineSource. */
                    public productInlineSource?: (google.cloud.retail.v2.IProductInlineSource|null);

                    /** ProductInputConfig gcsSource. */
                    public gcsSource?: (google.cloud.retail.v2.IGcsSource|null);

                    /** ProductInputConfig bigQuerySource. */
                    public bigQuerySource?: (google.cloud.retail.v2.IBigQuerySource|null);

                    /** ProductInputConfig source. */
                    public source?: ("productInlineSource"|"gcsSource"|"bigQuerySource");

                    /**
                     * Creates a new ProductInputConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ProductInputConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IProductInputConfig): google.cloud.retail.v2.ProductInputConfig;

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

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

                    /**
                     * Decodes a ProductInputConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ProductInputConfig
                     * @throws {Error} If the payload is not 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.retail.v2.ProductInputConfig;

                    /**
                     * Decodes a ProductInputConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ProductInputConfig
                     * @throws {Error} If the payload 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.retail.v2.ProductInputConfig;

                    /**
                     * Verifies a ProductInputConfig message.
                     * @param message Plain 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 ProductInputConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ProductInputConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ProductInputConfig;

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

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

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

                /** Properties of a UserEventInputConfig. */
                interface IUserEventInputConfig {

                    /** UserEventInputConfig userEventInlineSource */
                    userEventInlineSource?: (google.cloud.retail.v2.IUserEventInlineSource|null);

                    /** UserEventInputConfig gcsSource */
                    gcsSource?: (google.cloud.retail.v2.IGcsSource|null);

                    /** UserEventInputConfig bigQuerySource */
                    bigQuerySource?: (google.cloud.retail.v2.IBigQuerySource|null);
                }

                /** Represents a UserEventInputConfig. */
                class UserEventInputConfig implements IUserEventInputConfig {

                    /**
                     * Constructs a new UserEventInputConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IUserEventInputConfig);

                    /** UserEventInputConfig userEventInlineSource. */
                    public userEventInlineSource?: (google.cloud.retail.v2.IUserEventInlineSource|null);

                    /** UserEventInputConfig gcsSource. */
                    public gcsSource?: (google.cloud.retail.v2.IGcsSource|null);

                    /** UserEventInputConfig bigQuerySource. */
                    public bigQuerySource?: (google.cloud.retail.v2.IBigQuerySource|null);

                    /** UserEventInputConfig source. */
                    public source?: ("userEventInlineSource"|"gcsSource"|"bigQuerySource");

                    /**
                     * Creates a new UserEventInputConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UserEventInputConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IUserEventInputConfig): google.cloud.retail.v2.UserEventInputConfig;

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

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

                    /**
                     * Decodes a UserEventInputConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UserEventInputConfig
                     * @throws {Error} If the payload is not 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.retail.v2.UserEventInputConfig;

                    /**
                     * Decodes a UserEventInputConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UserEventInputConfig
                     * @throws {Error} If the payload 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.retail.v2.UserEventInputConfig;

                    /**
                     * Verifies a UserEventInputConfig message.
                     * @param message Plain 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 UserEventInputConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UserEventInputConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.UserEventInputConfig;

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

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

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

                /** Properties of a CompletionDataInputConfig. */
                interface ICompletionDataInputConfig {

                    /** CompletionDataInputConfig bigQuerySource */
                    bigQuerySource?: (google.cloud.retail.v2.IBigQuerySource|null);
                }

                /** Represents a CompletionDataInputConfig. */
                class CompletionDataInputConfig implements ICompletionDataInputConfig {

                    /**
                     * Constructs a new CompletionDataInputConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.ICompletionDataInputConfig);

                    /** CompletionDataInputConfig bigQuerySource. */
                    public bigQuerySource?: (google.cloud.retail.v2.IBigQuerySource|null);

                    /** CompletionDataInputConfig source. */
                    public source?: "bigQuerySource";

                    /**
                     * Creates a new CompletionDataInputConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CompletionDataInputConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2.ICompletionDataInputConfig): google.cloud.retail.v2.CompletionDataInputConfig;

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

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

                    /**
                     * Decodes a CompletionDataInputConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CompletionDataInputConfig
                     * @throws {Error} If the payload is not 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.retail.v2.CompletionDataInputConfig;

                    /**
                     * Decodes a CompletionDataInputConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CompletionDataInputConfig
                     * @throws {Error} If the payload 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.retail.v2.CompletionDataInputConfig;

                    /**
                     * Verifies a CompletionDataInputConfig message.
                     * @param message Plain 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 CompletionDataInputConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CompletionDataInputConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.CompletionDataInputConfig;

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

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

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

                /** Properties of an ImportMetadata. */
                interface IImportMetadata {

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

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

                    /** ImportMetadata successCount */
                    successCount?: (number|Long|string|null);

                    /** ImportMetadata failureCount */
                    failureCount?: (number|Long|string|null);

                    /** ImportMetadata requestId */
                    requestId?: (string|null);

                    /** ImportMetadata notificationPubsubTopic */
                    notificationPubsubTopic?: (string|null);
                }

                /** Represents an ImportMetadata. */
                class ImportMetadata implements IImportMetadata {

                    /**
                     * Constructs a new ImportMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IImportMetadata);

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

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

                    /** ImportMetadata successCount. */
                    public successCount: (number|Long|string);

                    /** ImportMetadata failureCount. */
                    public failureCount: (number|Long|string);

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

                    /** ImportMetadata notificationPubsubTopic. */
                    public notificationPubsubTopic: string;

                    /**
                     * Creates a new ImportMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ImportMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IImportMetadata): google.cloud.retail.v2.ImportMetadata;

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

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

                    /**
                     * Decodes an ImportMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ImportMetadata
                     * @throws {Error} If the payload is not 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.retail.v2.ImportMetadata;

                    /**
                     * Decodes an ImportMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ImportMetadata
                     * @throws {Error} If the payload 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.retail.v2.ImportMetadata;

                    /**
                     * Verifies an ImportMetadata message.
                     * @param message Plain 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 ImportMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ImportMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ImportMetadata;

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

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

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

                /** Properties of an ImportProductsResponse. */
                interface IImportProductsResponse {

                    /** ImportProductsResponse errorSamples */
                    errorSamples?: (google.rpc.IStatus[]|null);

                    /** ImportProductsResponse errorsConfig */
                    errorsConfig?: (google.cloud.retail.v2.IImportErrorsConfig|null);
                }

                /** Represents an ImportProductsResponse. */
                class ImportProductsResponse implements IImportProductsResponse {

                    /**
                     * Constructs a new ImportProductsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IImportProductsResponse);

                    /** ImportProductsResponse errorSamples. */
                    public errorSamples: google.rpc.IStatus[];

                    /** ImportProductsResponse errorsConfig. */
                    public errorsConfig?: (google.cloud.retail.v2.IImportErrorsConfig|null);

                    /**
                     * Creates a new ImportProductsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ImportProductsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IImportProductsResponse): google.cloud.retail.v2.ImportProductsResponse;

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

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

                    /**
                     * Decodes an ImportProductsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ImportProductsResponse
                     * @throws {Error} If the payload is not 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.retail.v2.ImportProductsResponse;

                    /**
                     * Decodes an ImportProductsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ImportProductsResponse
                     * @throws {Error} If the payload 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.retail.v2.ImportProductsResponse;

                    /**
                     * Verifies an ImportProductsResponse message.
                     * @param message Plain 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 ImportProductsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ImportProductsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ImportProductsResponse;

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

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

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

                /** Properties of an ImportUserEventsResponse. */
                interface IImportUserEventsResponse {

                    /** ImportUserEventsResponse errorSamples */
                    errorSamples?: (google.rpc.IStatus[]|null);

                    /** ImportUserEventsResponse errorsConfig */
                    errorsConfig?: (google.cloud.retail.v2.IImportErrorsConfig|null);

                    /** ImportUserEventsResponse importSummary */
                    importSummary?: (google.cloud.retail.v2.IUserEventImportSummary|null);
                }

                /** Represents an ImportUserEventsResponse. */
                class ImportUserEventsResponse implements IImportUserEventsResponse {

                    /**
                     * Constructs a new ImportUserEventsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IImportUserEventsResponse);

                    /** ImportUserEventsResponse errorSamples. */
                    public errorSamples: google.rpc.IStatus[];

                    /** ImportUserEventsResponse errorsConfig. */
                    public errorsConfig?: (google.cloud.retail.v2.IImportErrorsConfig|null);

                    /** ImportUserEventsResponse importSummary. */
                    public importSummary?: (google.cloud.retail.v2.IUserEventImportSummary|null);

                    /**
                     * Creates a new ImportUserEventsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ImportUserEventsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IImportUserEventsResponse): google.cloud.retail.v2.ImportUserEventsResponse;

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

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

                    /**
                     * Decodes an ImportUserEventsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ImportUserEventsResponse
                     * @throws {Error} If the payload is not 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.retail.v2.ImportUserEventsResponse;

                    /**
                     * Decodes an ImportUserEventsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ImportUserEventsResponse
                     * @throws {Error} If the payload 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.retail.v2.ImportUserEventsResponse;

                    /**
                     * Verifies an ImportUserEventsResponse message.
                     * @param message Plain 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 ImportUserEventsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ImportUserEventsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ImportUserEventsResponse;

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

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

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

                /** Properties of a UserEventImportSummary. */
                interface IUserEventImportSummary {

                    /** UserEventImportSummary joinedEventsCount */
                    joinedEventsCount?: (number|Long|string|null);

                    /** UserEventImportSummary unjoinedEventsCount */
                    unjoinedEventsCount?: (number|Long|string|null);
                }

                /** Represents a UserEventImportSummary. */
                class UserEventImportSummary implements IUserEventImportSummary {

                    /**
                     * Constructs a new UserEventImportSummary.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IUserEventImportSummary);

                    /** UserEventImportSummary joinedEventsCount. */
                    public joinedEventsCount: (number|Long|string);

                    /** UserEventImportSummary unjoinedEventsCount. */
                    public unjoinedEventsCount: (number|Long|string);

                    /**
                     * Creates a new UserEventImportSummary instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UserEventImportSummary instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IUserEventImportSummary): google.cloud.retail.v2.UserEventImportSummary;

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

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

                    /**
                     * Decodes a UserEventImportSummary message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UserEventImportSummary
                     * @throws {Error} If the payload is not 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.retail.v2.UserEventImportSummary;

                    /**
                     * Decodes a UserEventImportSummary message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UserEventImportSummary
                     * @throws {Error} If the payload 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.retail.v2.UserEventImportSummary;

                    /**
                     * Verifies a UserEventImportSummary message.
                     * @param message Plain 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 UserEventImportSummary message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UserEventImportSummary
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.UserEventImportSummary;

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

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

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

                /** Properties of an ImportCompletionDataResponse. */
                interface IImportCompletionDataResponse {

                    /** ImportCompletionDataResponse errorSamples */
                    errorSamples?: (google.rpc.IStatus[]|null);
                }

                /** Represents an ImportCompletionDataResponse. */
                class ImportCompletionDataResponse implements IImportCompletionDataResponse {

                    /**
                     * Constructs a new ImportCompletionDataResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IImportCompletionDataResponse);

                    /** ImportCompletionDataResponse errorSamples. */
                    public errorSamples: google.rpc.IStatus[];

                    /**
                     * Creates a new ImportCompletionDataResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ImportCompletionDataResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IImportCompletionDataResponse): google.cloud.retail.v2.ImportCompletionDataResponse;

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

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

                    /**
                     * Decodes an ImportCompletionDataResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ImportCompletionDataResponse
                     * @throws {Error} If the payload is not 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.retail.v2.ImportCompletionDataResponse;

                    /**
                     * Decodes an ImportCompletionDataResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ImportCompletionDataResponse
                     * @throws {Error} If the payload 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.retail.v2.ImportCompletionDataResponse;

                    /**
                     * Verifies an ImportCompletionDataResponse message.
                     * @param message Plain 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 ImportCompletionDataResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ImportCompletionDataResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ImportCompletionDataResponse;

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

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

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

                /** Properties of a Product. */
                interface IProduct {

                    /** Product expireTime */
                    expireTime?: (google.protobuf.ITimestamp|null);

                    /** Product ttl */
                    ttl?: (google.protobuf.IDuration|null);

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

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

                    /** Product type */
                    type?: (google.cloud.retail.v2.Product.Type|keyof typeof google.cloud.retail.v2.Product.Type|null);

                    /** Product primaryProductId */
                    primaryProductId?: (string|null);

                    /** Product collectionMemberIds */
                    collectionMemberIds?: (string[]|null);

                    /** Product gtin */
                    gtin?: (string|null);

                    /** Product categories */
                    categories?: (string[]|null);

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

                    /** Product brands */
                    brands?: (string[]|null);

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

                    /** Product languageCode */
                    languageCode?: (string|null);

                    /** Product attributes */
                    attributes?: ({ [k: string]: google.cloud.retail.v2.ICustomAttribute }|null);

                    /** Product tags */
                    tags?: (string[]|null);

                    /** Product priceInfo */
                    priceInfo?: (google.cloud.retail.v2.IPriceInfo|null);

                    /** Product rating */
                    rating?: (google.cloud.retail.v2.IRating|null);

                    /** Product availableTime */
                    availableTime?: (google.protobuf.ITimestamp|null);

                    /** Product availability */
                    availability?: (google.cloud.retail.v2.Product.Availability|keyof typeof google.cloud.retail.v2.Product.Availability|null);

                    /** Product availableQuantity */
                    availableQuantity?: (google.protobuf.IInt32Value|null);

                    /** Product fulfillmentInfo */
                    fulfillmentInfo?: (google.cloud.retail.v2.IFulfillmentInfo[]|null);

                    /** Product uri */
                    uri?: (string|null);

                    /** Product images */
                    images?: (google.cloud.retail.v2.IImage[]|null);

                    /** Product audience */
                    audience?: (google.cloud.retail.v2.IAudience|null);

                    /** Product colorInfo */
                    colorInfo?: (google.cloud.retail.v2.IColorInfo|null);

                    /** Product sizes */
                    sizes?: (string[]|null);

                    /** Product materials */
                    materials?: (string[]|null);

                    /** Product patterns */
                    patterns?: (string[]|null);

                    /** Product conditions */
                    conditions?: (string[]|null);

                    /** Product promotions */
                    promotions?: (google.cloud.retail.v2.IPromotion[]|null);

                    /** Product publishTime */
                    publishTime?: (google.protobuf.ITimestamp|null);

                    /** Product retrievableFields */
                    retrievableFields?: (google.protobuf.IFieldMask|null);

                    /** Product variants */
                    variants?: (google.cloud.retail.v2.IProduct[]|null);

                    /** Product localInventories */
                    localInventories?: (google.cloud.retail.v2.ILocalInventory[]|null);
                }

                /** Represents a Product. */
                class Product implements IProduct {

                    /**
                     * Constructs a new Product.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IProduct);

                    /** Product expireTime. */
                    public expireTime?: (google.protobuf.ITimestamp|null);

                    /** Product ttl. */
                    public ttl?: (google.protobuf.IDuration|null);

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

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

                    /** Product type. */
                    public type: (google.cloud.retail.v2.Product.Type|keyof typeof google.cloud.retail.v2.Product.Type);

                    /** Product primaryProductId. */
                    public primaryProductId: string;

                    /** Product collectionMemberIds. */
                    public collectionMemberIds: string[];

                    /** Product gtin. */
                    public gtin: string;

                    /** Product categories. */
                    public categories: string[];

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

                    /** Product brands. */
                    public brands: string[];

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

                    /** Product languageCode. */
                    public languageCode: string;

                    /** Product attributes. */
                    public attributes: { [k: string]: google.cloud.retail.v2.ICustomAttribute };

                    /** Product tags. */
                    public tags: string[];

                    /** Product priceInfo. */
                    public priceInfo?: (google.cloud.retail.v2.IPriceInfo|null);

                    /** Product rating. */
                    public rating?: (google.cloud.retail.v2.IRating|null);

                    /** Product availableTime. */
                    public availableTime?: (google.protobuf.ITimestamp|null);

                    /** Product availability. */
                    public availability: (google.cloud.retail.v2.Product.Availability|keyof typeof google.cloud.retail.v2.Product.Availability);

                    /** Product availableQuantity. */
                    public availableQuantity?: (google.protobuf.IInt32Value|null);

                    /** Product fulfillmentInfo. */
                    public fulfillmentInfo: google.cloud.retail.v2.IFulfillmentInfo[];

                    /** Product uri. */
                    public uri: string;

                    /** Product images. */
                    public images: google.cloud.retail.v2.IImage[];

                    /** Product audience. */
                    public audience?: (google.cloud.retail.v2.IAudience|null);

                    /** Product colorInfo. */
                    public colorInfo?: (google.cloud.retail.v2.IColorInfo|null);

                    /** Product sizes. */
                    public sizes: string[];

                    /** Product materials. */
                    public materials: string[];

                    /** Product patterns. */
                    public patterns: string[];

                    /** Product conditions. */
                    public conditions: string[];

                    /** Product promotions. */
                    public promotions: google.cloud.retail.v2.IPromotion[];

                    /** Product publishTime. */
                    public publishTime?: (google.protobuf.ITimestamp|null);

                    /** Product retrievableFields. */
                    public retrievableFields?: (google.protobuf.IFieldMask|null);

                    /** Product variants. */
                    public variants: google.cloud.retail.v2.IProduct[];

                    /** Product localInventories. */
                    public localInventories: google.cloud.retail.v2.ILocalInventory[];

                    /** Product expiration. */
                    public expiration?: ("expireTime"|"ttl");

                    /**
                     * Creates a new Product instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Product instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IProduct): google.cloud.retail.v2.Product;

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

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

                    /**
                     * Decodes a Product message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Product
                     * @throws {Error} If the payload is not 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.retail.v2.Product;

                    /**
                     * Decodes a Product message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Product
                     * @throws {Error} If the payload 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.retail.v2.Product;

                    /**
                     * Verifies a Product message.
                     * @param message Plain 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 Product message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Product
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.Product;

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

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

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

                namespace Product {

                    /** Type enum. */
                    enum Type {
                        TYPE_UNSPECIFIED = 0,
                        PRIMARY = 1,
                        VARIANT = 2,
                        COLLECTION = 3
                    }

                    /** Availability enum. */
                    enum Availability {
                        AVAILABILITY_UNSPECIFIED = 0,
                        IN_STOCK = 1,
                        OUT_OF_STOCK = 2,
                        PREORDER = 3,
                        BACKORDER = 4
                    }
                }

                /** Properties of a Promotion. */
                interface IPromotion {

                    /** Promotion promotionId */
                    promotionId?: (string|null);
                }

                /** Represents a Promotion. */
                class Promotion implements IPromotion {

                    /**
                     * Constructs a new Promotion.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IPromotion);

                    /** Promotion promotionId. */
                    public promotionId: string;

                    /**
                     * Creates a new Promotion instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Promotion instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IPromotion): google.cloud.retail.v2.Promotion;

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

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

                    /**
                     * Decodes a Promotion message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Promotion
                     * @throws {Error} If the payload is not 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.retail.v2.Promotion;

                    /**
                     * Decodes a Promotion message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Promotion
                     * @throws {Error} If the payload 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.retail.v2.Promotion;

                    /**
                     * Verifies a Promotion message.
                     * @param message Plain 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 Promotion message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Promotion
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.Promotion;

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

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

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

                /** Properties of a UserEvent. */
                interface IUserEvent {

                    /** UserEvent eventType */
                    eventType?: (string|null);

                    /** UserEvent visitorId */
                    visitorId?: (string|null);

                    /** UserEvent sessionId */
                    sessionId?: (string|null);

                    /** UserEvent eventTime */
                    eventTime?: (google.protobuf.ITimestamp|null);

                    /** UserEvent experimentIds */
                    experimentIds?: (string[]|null);

                    /** UserEvent attributionToken */
                    attributionToken?: (string|null);

                    /** UserEvent productDetails */
                    productDetails?: (google.cloud.retail.v2.IProductDetail[]|null);

                    /** UserEvent completionDetail */
                    completionDetail?: (google.cloud.retail.v2.ICompletionDetail|null);

                    /** UserEvent attributes */
                    attributes?: ({ [k: string]: google.cloud.retail.v2.ICustomAttribute }|null);

                    /** UserEvent cartId */
                    cartId?: (string|null);

                    /** UserEvent purchaseTransaction */
                    purchaseTransaction?: (google.cloud.retail.v2.IPurchaseTransaction|null);

                    /** UserEvent searchQuery */
                    searchQuery?: (string|null);

                    /** UserEvent filter */
                    filter?: (string|null);

                    /** UserEvent orderBy */
                    orderBy?: (string|null);

                    /** UserEvent offset */
                    offset?: (number|null);

                    /** UserEvent pageCategories */
                    pageCategories?: (string[]|null);

                    /** UserEvent userInfo */
                    userInfo?: (google.cloud.retail.v2.IUserInfo|null);

                    /** UserEvent uri */
                    uri?: (string|null);

                    /** UserEvent referrerUri */
                    referrerUri?: (string|null);

                    /** UserEvent pageViewId */
                    pageViewId?: (string|null);

                    /** UserEvent entity */
                    entity?: (string|null);
                }

                /** Represents a UserEvent. */
                class UserEvent implements IUserEvent {

                    /**
                     * Constructs a new UserEvent.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IUserEvent);

                    /** UserEvent eventType. */
                    public eventType: string;

                    /** UserEvent visitorId. */
                    public visitorId: string;

                    /** UserEvent sessionId. */
                    public sessionId: string;

                    /** UserEvent eventTime. */
                    public eventTime?: (google.protobuf.ITimestamp|null);

                    /** UserEvent experimentIds. */
                    public experimentIds: string[];

                    /** UserEvent attributionToken. */
                    public attributionToken: string;

                    /** UserEvent productDetails. */
                    public productDetails: google.cloud.retail.v2.IProductDetail[];

                    /** UserEvent completionDetail. */
                    public completionDetail?: (google.cloud.retail.v2.ICompletionDetail|null);

                    /** UserEvent attributes. */
                    public attributes: { [k: string]: google.cloud.retail.v2.ICustomAttribute };

                    /** UserEvent cartId. */
                    public cartId: string;

                    /** UserEvent purchaseTransaction. */
                    public purchaseTransaction?: (google.cloud.retail.v2.IPurchaseTransaction|null);

                    /** UserEvent searchQuery. */
                    public searchQuery: string;

                    /** UserEvent filter. */
                    public filter: string;

                    /** UserEvent orderBy. */
                    public orderBy: string;

                    /** UserEvent offset. */
                    public offset: number;

                    /** UserEvent pageCategories. */
                    public pageCategories: string[];

                    /** UserEvent userInfo. */
                    public userInfo?: (google.cloud.retail.v2.IUserInfo|null);

                    /** UserEvent uri. */
                    public uri: string;

                    /** UserEvent referrerUri. */
                    public referrerUri: string;

                    /** UserEvent pageViewId. */
                    public pageViewId: string;

                    /** UserEvent entity. */
                    public entity: string;

                    /**
                     * Creates a new UserEvent instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UserEvent instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IUserEvent): google.cloud.retail.v2.UserEvent;

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

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

                    /**
                     * Decodes a UserEvent message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UserEvent
                     * @throws {Error} If the payload is not 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.retail.v2.UserEvent;

                    /**
                     * Decodes a UserEvent message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UserEvent
                     * @throws {Error} If the payload 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.retail.v2.UserEvent;

                    /**
                     * Verifies a UserEvent message.
                     * @param message Plain 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 UserEvent message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UserEvent
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.UserEvent;

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

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

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

                /** Properties of a ProductDetail. */
                interface IProductDetail {

                    /** ProductDetail product */
                    product?: (google.cloud.retail.v2.IProduct|null);

                    /** ProductDetail quantity */
                    quantity?: (google.protobuf.IInt32Value|null);
                }

                /** Represents a ProductDetail. */
                class ProductDetail implements IProductDetail {

                    /**
                     * Constructs a new ProductDetail.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IProductDetail);

                    /** ProductDetail product. */
                    public product?: (google.cloud.retail.v2.IProduct|null);

                    /** ProductDetail quantity. */
                    public quantity?: (google.protobuf.IInt32Value|null);

                    /**
                     * Creates a new ProductDetail instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ProductDetail instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IProductDetail): google.cloud.retail.v2.ProductDetail;

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

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

                    /**
                     * Decodes a ProductDetail message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ProductDetail
                     * @throws {Error} If the payload is not 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.retail.v2.ProductDetail;

                    /**
                     * Decodes a ProductDetail message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ProductDetail
                     * @throws {Error} If the payload 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.retail.v2.ProductDetail;

                    /**
                     * Verifies a ProductDetail message.
                     * @param message Plain 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 ProductDetail message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ProductDetail
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ProductDetail;

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

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

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

                /** Properties of a CompletionDetail. */
                interface ICompletionDetail {

                    /** CompletionDetail completionAttributionToken */
                    completionAttributionToken?: (string|null);

                    /** CompletionDetail selectedSuggestion */
                    selectedSuggestion?: (string|null);

                    /** CompletionDetail selectedPosition */
                    selectedPosition?: (number|null);
                }

                /** Represents a CompletionDetail. */
                class CompletionDetail implements ICompletionDetail {

                    /**
                     * Constructs a new CompletionDetail.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.ICompletionDetail);

                    /** CompletionDetail completionAttributionToken. */
                    public completionAttributionToken: string;

                    /** CompletionDetail selectedSuggestion. */
                    public selectedSuggestion: string;

                    /** CompletionDetail selectedPosition. */
                    public selectedPosition: number;

                    /**
                     * Creates a new CompletionDetail instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CompletionDetail instance
                     */
                    public static create(properties?: google.cloud.retail.v2.ICompletionDetail): google.cloud.retail.v2.CompletionDetail;

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

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

                    /**
                     * Decodes a CompletionDetail message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CompletionDetail
                     * @throws {Error} If the payload is not 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.retail.v2.CompletionDetail;

                    /**
                     * Decodes a CompletionDetail message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CompletionDetail
                     * @throws {Error} If the payload 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.retail.v2.CompletionDetail;

                    /**
                     * Verifies a CompletionDetail message.
                     * @param message Plain 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 CompletionDetail message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CompletionDetail
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.CompletionDetail;

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

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

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

                /** Properties of a PurchaseTransaction. */
                interface IPurchaseTransaction {

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

                    /** PurchaseTransaction revenue */
                    revenue?: (number|null);

                    /** PurchaseTransaction tax */
                    tax?: (number|null);

                    /** PurchaseTransaction cost */
                    cost?: (number|null);

                    /** PurchaseTransaction currencyCode */
                    currencyCode?: (string|null);
                }

                /** Represents a PurchaseTransaction. */
                class PurchaseTransaction implements IPurchaseTransaction {

                    /**
                     * Constructs a new PurchaseTransaction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IPurchaseTransaction);

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

                    /** PurchaseTransaction revenue. */
                    public revenue: number;

                    /** PurchaseTransaction tax. */
                    public tax: number;

                    /** PurchaseTransaction cost. */
                    public cost: number;

                    /** PurchaseTransaction currencyCode. */
                    public currencyCode: string;

                    /**
                     * Creates a new PurchaseTransaction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PurchaseTransaction instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IPurchaseTransaction): google.cloud.retail.v2.PurchaseTransaction;

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

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

                    /**
                     * Decodes a PurchaseTransaction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PurchaseTransaction
                     * @throws {Error} If the payload is not 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.retail.v2.PurchaseTransaction;

                    /**
                     * Decodes a PurchaseTransaction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PurchaseTransaction
                     * @throws {Error} If the payload 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.retail.v2.PurchaseTransaction;

                    /**
                     * Verifies a PurchaseTransaction message.
                     * @param message Plain 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 PurchaseTransaction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PurchaseTransaction
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.PurchaseTransaction;

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

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

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

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

                    /**
                     * Constructs a new CatalogService 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 CatalogService 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): CatalogService;

                    /**
                     * Calls ListCatalogs.
                     * @param request ListCatalogsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListCatalogsResponse
                     */
                    public listCatalogs(request: google.cloud.retail.v2.IListCatalogsRequest, callback: google.cloud.retail.v2.CatalogService.ListCatalogsCallback): void;

                    /**
                     * Calls ListCatalogs.
                     * @param request ListCatalogsRequest message or plain object
                     * @returns Promise
                     */
                    public listCatalogs(request: google.cloud.retail.v2.IListCatalogsRequest): Promise<google.cloud.retail.v2.ListCatalogsResponse>;

                    /**
                     * Calls UpdateCatalog.
                     * @param request UpdateCatalogRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Catalog
                     */
                    public updateCatalog(request: google.cloud.retail.v2.IUpdateCatalogRequest, callback: google.cloud.retail.v2.CatalogService.UpdateCatalogCallback): void;

                    /**
                     * Calls UpdateCatalog.
                     * @param request UpdateCatalogRequest message or plain object
                     * @returns Promise
                     */
                    public updateCatalog(request: google.cloud.retail.v2.IUpdateCatalogRequest): Promise<google.cloud.retail.v2.Catalog>;

                    /**
                     * Calls SetDefaultBranch.
                     * @param request SetDefaultBranchRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Empty
                     */
                    public setDefaultBranch(request: google.cloud.retail.v2.ISetDefaultBranchRequest, callback: google.cloud.retail.v2.CatalogService.SetDefaultBranchCallback): void;

                    /**
                     * Calls SetDefaultBranch.
                     * @param request SetDefaultBranchRequest message or plain object
                     * @returns Promise
                     */
                    public setDefaultBranch(request: google.cloud.retail.v2.ISetDefaultBranchRequest): Promise<google.protobuf.Empty>;

                    /**
                     * Calls GetDefaultBranch.
                     * @param request GetDefaultBranchRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and GetDefaultBranchResponse
                     */
                    public getDefaultBranch(request: google.cloud.retail.v2.IGetDefaultBranchRequest, callback: google.cloud.retail.v2.CatalogService.GetDefaultBranchCallback): void;

                    /**
                     * Calls GetDefaultBranch.
                     * @param request GetDefaultBranchRequest message or plain object
                     * @returns Promise
                     */
                    public getDefaultBranch(request: google.cloud.retail.v2.IGetDefaultBranchRequest): Promise<google.cloud.retail.v2.GetDefaultBranchResponse>;

                    /**
                     * Calls GetCompletionConfig.
                     * @param request GetCompletionConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and CompletionConfig
                     */
                    public getCompletionConfig(request: google.cloud.retail.v2.IGetCompletionConfigRequest, callback: google.cloud.retail.v2.CatalogService.GetCompletionConfigCallback): void;

                    /**
                     * Calls GetCompletionConfig.
                     * @param request GetCompletionConfigRequest message or plain object
                     * @returns Promise
                     */
                    public getCompletionConfig(request: google.cloud.retail.v2.IGetCompletionConfigRequest): Promise<google.cloud.retail.v2.CompletionConfig>;

                    /**
                     * Calls UpdateCompletionConfig.
                     * @param request UpdateCompletionConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and CompletionConfig
                     */
                    public updateCompletionConfig(request: google.cloud.retail.v2.IUpdateCompletionConfigRequest, callback: google.cloud.retail.v2.CatalogService.UpdateCompletionConfigCallback): void;

                    /**
                     * Calls UpdateCompletionConfig.
                     * @param request UpdateCompletionConfigRequest message or plain object
                     * @returns Promise
                     */
                    public updateCompletionConfig(request: google.cloud.retail.v2.IUpdateCompletionConfigRequest): Promise<google.cloud.retail.v2.CompletionConfig>;

                    /**
                     * Calls GetAttributesConfig.
                     * @param request GetAttributesConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and AttributesConfig
                     */
                    public getAttributesConfig(request: google.cloud.retail.v2.IGetAttributesConfigRequest, callback: google.cloud.retail.v2.CatalogService.GetAttributesConfigCallback): void;

                    /**
                     * Calls GetAttributesConfig.
                     * @param request GetAttributesConfigRequest message or plain object
                     * @returns Promise
                     */
                    public getAttributesConfig(request: google.cloud.retail.v2.IGetAttributesConfigRequest): Promise<google.cloud.retail.v2.AttributesConfig>;

                    /**
                     * Calls UpdateAttributesConfig.
                     * @param request UpdateAttributesConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and AttributesConfig
                     */
                    public updateAttributesConfig(request: google.cloud.retail.v2.IUpdateAttributesConfigRequest, callback: google.cloud.retail.v2.CatalogService.UpdateAttributesConfigCallback): void;

                    /**
                     * Calls UpdateAttributesConfig.
                     * @param request UpdateAttributesConfigRequest message or plain object
                     * @returns Promise
                     */
                    public updateAttributesConfig(request: google.cloud.retail.v2.IUpdateAttributesConfigRequest): Promise<google.cloud.retail.v2.AttributesConfig>;

                    /**
                     * Calls AddCatalogAttribute.
                     * @param request AddCatalogAttributeRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and AttributesConfig
                     */
                    public addCatalogAttribute(request: google.cloud.retail.v2.IAddCatalogAttributeRequest, callback: google.cloud.retail.v2.CatalogService.AddCatalogAttributeCallback): void;

                    /**
                     * Calls AddCatalogAttribute.
                     * @param request AddCatalogAttributeRequest message or plain object
                     * @returns Promise
                     */
                    public addCatalogAttribute(request: google.cloud.retail.v2.IAddCatalogAttributeRequest): Promise<google.cloud.retail.v2.AttributesConfig>;

                    /**
                     * Calls RemoveCatalogAttribute.
                     * @param request RemoveCatalogAttributeRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and AttributesConfig
                     */
                    public removeCatalogAttribute(request: google.cloud.retail.v2.IRemoveCatalogAttributeRequest, callback: google.cloud.retail.v2.CatalogService.RemoveCatalogAttributeCallback): void;

                    /**
                     * Calls RemoveCatalogAttribute.
                     * @param request RemoveCatalogAttributeRequest message or plain object
                     * @returns Promise
                     */
                    public removeCatalogAttribute(request: google.cloud.retail.v2.IRemoveCatalogAttributeRequest): Promise<google.cloud.retail.v2.AttributesConfig>;

                    /**
                     * Calls ReplaceCatalogAttribute.
                     * @param request ReplaceCatalogAttributeRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and AttributesConfig
                     */
                    public replaceCatalogAttribute(request: google.cloud.retail.v2.IReplaceCatalogAttributeRequest, callback: google.cloud.retail.v2.CatalogService.ReplaceCatalogAttributeCallback): void;

                    /**
                     * Calls ReplaceCatalogAttribute.
                     * @param request ReplaceCatalogAttributeRequest message or plain object
                     * @returns Promise
                     */
                    public replaceCatalogAttribute(request: google.cloud.retail.v2.IReplaceCatalogAttributeRequest): Promise<google.cloud.retail.v2.AttributesConfig>;
                }

                namespace CatalogService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.CatalogService|listCatalogs}.
                     * @param error Error, if any
                     * @param [response] ListCatalogsResponse
                     */
                    type ListCatalogsCallback = (error: (Error|null), response?: google.cloud.retail.v2.ListCatalogsResponse) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.CatalogService|updateCatalog}.
                     * @param error Error, if any
                     * @param [response] Catalog
                     */
                    type UpdateCatalogCallback = (error: (Error|null), response?: google.cloud.retail.v2.Catalog) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.CatalogService|setDefaultBranch}.
                     * @param error Error, if any
                     * @param [response] Empty
                     */
                    type SetDefaultBranchCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.CatalogService|getDefaultBranch}.
                     * @param error Error, if any
                     * @param [response] GetDefaultBranchResponse
                     */
                    type GetDefaultBranchCallback = (error: (Error|null), response?: google.cloud.retail.v2.GetDefaultBranchResponse) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.CatalogService|getCompletionConfig}.
                     * @param error Error, if any
                     * @param [response] CompletionConfig
                     */
                    type GetCompletionConfigCallback = (error: (Error|null), response?: google.cloud.retail.v2.CompletionConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.CatalogService|updateCompletionConfig}.
                     * @param error Error, if any
                     * @param [response] CompletionConfig
                     */
                    type UpdateCompletionConfigCallback = (error: (Error|null), response?: google.cloud.retail.v2.CompletionConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.CatalogService|getAttributesConfig}.
                     * @param error Error, if any
                     * @param [response] AttributesConfig
                     */
                    type GetAttributesConfigCallback = (error: (Error|null), response?: google.cloud.retail.v2.AttributesConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.CatalogService|updateAttributesConfig}.
                     * @param error Error, if any
                     * @param [response] AttributesConfig
                     */
                    type UpdateAttributesConfigCallback = (error: (Error|null), response?: google.cloud.retail.v2.AttributesConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.CatalogService|addCatalogAttribute}.
                     * @param error Error, if any
                     * @param [response] AttributesConfig
                     */
                    type AddCatalogAttributeCallback = (error: (Error|null), response?: google.cloud.retail.v2.AttributesConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.CatalogService|removeCatalogAttribute}.
                     * @param error Error, if any
                     * @param [response] AttributesConfig
                     */
                    type RemoveCatalogAttributeCallback = (error: (Error|null), response?: google.cloud.retail.v2.AttributesConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.CatalogService|replaceCatalogAttribute}.
                     * @param error Error, if any
                     * @param [response] AttributesConfig
                     */
                    type ReplaceCatalogAttributeCallback = (error: (Error|null), response?: google.cloud.retail.v2.AttributesConfig) => void;
                }

                /** Properties of a ListCatalogsRequest. */
                interface IListCatalogsRequest {

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

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

                    /** ListCatalogsRequest pageToken */
                    pageToken?: (string|null);
                }

                /** Represents a ListCatalogsRequest. */
                class ListCatalogsRequest implements IListCatalogsRequest {

                    /**
                     * Constructs a new ListCatalogsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IListCatalogsRequest);

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

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

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

                    /**
                     * Creates a new ListCatalogsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListCatalogsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IListCatalogsRequest): google.cloud.retail.v2.ListCatalogsRequest;

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

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

                    /**
                     * Decodes a ListCatalogsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListCatalogsRequest
                     * @throws {Error} If the payload is not 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.retail.v2.ListCatalogsRequest;

                    /**
                     * Decodes a ListCatalogsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListCatalogsRequest
                     * @throws {Error} If the payload 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.retail.v2.ListCatalogsRequest;

                    /**
                     * Verifies a ListCatalogsRequest message.
                     * @param message Plain 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 ListCatalogsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListCatalogsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ListCatalogsRequest;

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

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

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

                /** Properties of a ListCatalogsResponse. */
                interface IListCatalogsResponse {

                    /** ListCatalogsResponse catalogs */
                    catalogs?: (google.cloud.retail.v2.ICatalog[]|null);

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

                /** Represents a ListCatalogsResponse. */
                class ListCatalogsResponse implements IListCatalogsResponse {

                    /**
                     * Constructs a new ListCatalogsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IListCatalogsResponse);

                    /** ListCatalogsResponse catalogs. */
                    public catalogs: google.cloud.retail.v2.ICatalog[];

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

                    /**
                     * Creates a new ListCatalogsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListCatalogsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IListCatalogsResponse): google.cloud.retail.v2.ListCatalogsResponse;

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

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

                    /**
                     * Decodes a ListCatalogsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListCatalogsResponse
                     * @throws {Error} If the payload is not 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.retail.v2.ListCatalogsResponse;

                    /**
                     * Decodes a ListCatalogsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListCatalogsResponse
                     * @throws {Error} If the payload 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.retail.v2.ListCatalogsResponse;

                    /**
                     * Verifies a ListCatalogsResponse message.
                     * @param message Plain 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 ListCatalogsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListCatalogsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ListCatalogsResponse;

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

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

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

                /** Properties of an UpdateCatalogRequest. */
                interface IUpdateCatalogRequest {

                    /** UpdateCatalogRequest catalog */
                    catalog?: (google.cloud.retail.v2.ICatalog|null);

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

                /** Represents an UpdateCatalogRequest. */
                class UpdateCatalogRequest implements IUpdateCatalogRequest {

                    /**
                     * Constructs a new UpdateCatalogRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IUpdateCatalogRequest);

                    /** UpdateCatalogRequest catalog. */
                    public catalog?: (google.cloud.retail.v2.ICatalog|null);

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

                    /**
                     * Creates a new UpdateCatalogRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateCatalogRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IUpdateCatalogRequest): google.cloud.retail.v2.UpdateCatalogRequest;

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

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

                    /**
                     * Decodes an UpdateCatalogRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateCatalogRequest
                     * @throws {Error} If the payload is not 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.retail.v2.UpdateCatalogRequest;

                    /**
                     * Decodes an UpdateCatalogRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateCatalogRequest
                     * @throws {Error} If the payload 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.retail.v2.UpdateCatalogRequest;

                    /**
                     * Verifies an UpdateCatalogRequest message.
                     * @param message Plain 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 UpdateCatalogRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateCatalogRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.UpdateCatalogRequest;

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

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

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

                /** Properties of a SetDefaultBranchRequest. */
                interface ISetDefaultBranchRequest {

                    /** SetDefaultBranchRequest catalog */
                    catalog?: (string|null);

                    /** SetDefaultBranchRequest branchId */
                    branchId?: (string|null);

                    /** SetDefaultBranchRequest note */
                    note?: (string|null);

                    /** SetDefaultBranchRequest force */
                    force?: (boolean|null);
                }

                /** Represents a SetDefaultBranchRequest. */
                class SetDefaultBranchRequest implements ISetDefaultBranchRequest {

                    /**
                     * Constructs a new SetDefaultBranchRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.ISetDefaultBranchRequest);

                    /** SetDefaultBranchRequest catalog. */
                    public catalog: string;

                    /** SetDefaultBranchRequest branchId. */
                    public branchId: string;

                    /** SetDefaultBranchRequest note. */
                    public note: string;

                    /** SetDefaultBranchRequest force. */
                    public force: boolean;

                    /**
                     * Creates a new SetDefaultBranchRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SetDefaultBranchRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.ISetDefaultBranchRequest): google.cloud.retail.v2.SetDefaultBranchRequest;

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

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

                    /**
                     * Decodes a SetDefaultBranchRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SetDefaultBranchRequest
                     * @throws {Error} If the payload is not 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.retail.v2.SetDefaultBranchRequest;

                    /**
                     * Decodes a SetDefaultBranchRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SetDefaultBranchRequest
                     * @throws {Error} If the payload 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.retail.v2.SetDefaultBranchRequest;

                    /**
                     * Verifies a SetDefaultBranchRequest message.
                     * @param message Plain 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 SetDefaultBranchRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SetDefaultBranchRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.SetDefaultBranchRequest;

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

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

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

                /** Properties of a GetDefaultBranchRequest. */
                interface IGetDefaultBranchRequest {

                    /** GetDefaultBranchRequest catalog */
                    catalog?: (string|null);
                }

                /** Represents a GetDefaultBranchRequest. */
                class GetDefaultBranchRequest implements IGetDefaultBranchRequest {

                    /**
                     * Constructs a new GetDefaultBranchRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IGetDefaultBranchRequest);

                    /** GetDefaultBranchRequest catalog. */
                    public catalog: string;

                    /**
                     * Creates a new GetDefaultBranchRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetDefaultBranchRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IGetDefaultBranchRequest): google.cloud.retail.v2.GetDefaultBranchRequest;

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

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

                    /**
                     * Decodes a GetDefaultBranchRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetDefaultBranchRequest
                     * @throws {Error} If the payload is not 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.retail.v2.GetDefaultBranchRequest;

                    /**
                     * Decodes a GetDefaultBranchRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetDefaultBranchRequest
                     * @throws {Error} If the payload 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.retail.v2.GetDefaultBranchRequest;

                    /**
                     * Verifies a GetDefaultBranchRequest message.
                     * @param message Plain 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 GetDefaultBranchRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetDefaultBranchRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.GetDefaultBranchRequest;

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

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

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

                /** Properties of a GetDefaultBranchResponse. */
                interface IGetDefaultBranchResponse {

                    /** GetDefaultBranchResponse branch */
                    branch?: (string|null);

                    /** GetDefaultBranchResponse setTime */
                    setTime?: (google.protobuf.ITimestamp|null);

                    /** GetDefaultBranchResponse note */
                    note?: (string|null);
                }

                /** Represents a GetDefaultBranchResponse. */
                class GetDefaultBranchResponse implements IGetDefaultBranchResponse {

                    /**
                     * Constructs a new GetDefaultBranchResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IGetDefaultBranchResponse);

                    /** GetDefaultBranchResponse branch. */
                    public branch: string;

                    /** GetDefaultBranchResponse setTime. */
                    public setTime?: (google.protobuf.ITimestamp|null);

                    /** GetDefaultBranchResponse note. */
                    public note: string;

                    /**
                     * Creates a new GetDefaultBranchResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetDefaultBranchResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IGetDefaultBranchResponse): google.cloud.retail.v2.GetDefaultBranchResponse;

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

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

                    /**
                     * Decodes a GetDefaultBranchResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetDefaultBranchResponse
                     * @throws {Error} If the payload is not 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.retail.v2.GetDefaultBranchResponse;

                    /**
                     * Decodes a GetDefaultBranchResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetDefaultBranchResponse
                     * @throws {Error} If the payload 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.retail.v2.GetDefaultBranchResponse;

                    /**
                     * Verifies a GetDefaultBranchResponse message.
                     * @param message Plain 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 GetDefaultBranchResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetDefaultBranchResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.GetDefaultBranchResponse;

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

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

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

                /** Properties of a GetCompletionConfigRequest. */
                interface IGetCompletionConfigRequest {

                    /** GetCompletionConfigRequest name */
                    name?: (string|null);
                }

                /** Represents a GetCompletionConfigRequest. */
                class GetCompletionConfigRequest implements IGetCompletionConfigRequest {

                    /**
                     * Constructs a new GetCompletionConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IGetCompletionConfigRequest);

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

                    /**
                     * Creates a new GetCompletionConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetCompletionConfigRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IGetCompletionConfigRequest): google.cloud.retail.v2.GetCompletionConfigRequest;

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

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

                    /**
                     * Decodes a GetCompletionConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetCompletionConfigRequest
                     * @throws {Error} If the payload is not 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.retail.v2.GetCompletionConfigRequest;

                    /**
                     * Decodes a GetCompletionConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetCompletionConfigRequest
                     * @throws {Error} If the payload 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.retail.v2.GetCompletionConfigRequest;

                    /**
                     * Verifies a GetCompletionConfigRequest message.
                     * @param message Plain 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 GetCompletionConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetCompletionConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.GetCompletionConfigRequest;

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

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

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

                /** Properties of an UpdateCompletionConfigRequest. */
                interface IUpdateCompletionConfigRequest {

                    /** UpdateCompletionConfigRequest completionConfig */
                    completionConfig?: (google.cloud.retail.v2.ICompletionConfig|null);

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

                /** Represents an UpdateCompletionConfigRequest. */
                class UpdateCompletionConfigRequest implements IUpdateCompletionConfigRequest {

                    /**
                     * Constructs a new UpdateCompletionConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IUpdateCompletionConfigRequest);

                    /** UpdateCompletionConfigRequest completionConfig. */
                    public completionConfig?: (google.cloud.retail.v2.ICompletionConfig|null);

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

                    /**
                     * Creates a new UpdateCompletionConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateCompletionConfigRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IUpdateCompletionConfigRequest): google.cloud.retail.v2.UpdateCompletionConfigRequest;

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

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

                    /**
                     * Decodes an UpdateCompletionConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateCompletionConfigRequest
                     * @throws {Error} If the payload is not 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.retail.v2.UpdateCompletionConfigRequest;

                    /**
                     * Decodes an UpdateCompletionConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateCompletionConfigRequest
                     * @throws {Error} If the payload 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.retail.v2.UpdateCompletionConfigRequest;

                    /**
                     * Verifies an UpdateCompletionConfigRequest message.
                     * @param message Plain 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 UpdateCompletionConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateCompletionConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.UpdateCompletionConfigRequest;

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

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

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

                /** Properties of a GetAttributesConfigRequest. */
                interface IGetAttributesConfigRequest {

                    /** GetAttributesConfigRequest name */
                    name?: (string|null);
                }

                /** Represents a GetAttributesConfigRequest. */
                class GetAttributesConfigRequest implements IGetAttributesConfigRequest {

                    /**
                     * Constructs a new GetAttributesConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IGetAttributesConfigRequest);

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

                    /**
                     * Creates a new GetAttributesConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetAttributesConfigRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IGetAttributesConfigRequest): google.cloud.retail.v2.GetAttributesConfigRequest;

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

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

                    /**
                     * Decodes a GetAttributesConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetAttributesConfigRequest
                     * @throws {Error} If the payload is not 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.retail.v2.GetAttributesConfigRequest;

                    /**
                     * Decodes a GetAttributesConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetAttributesConfigRequest
                     * @throws {Error} If the payload 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.retail.v2.GetAttributesConfigRequest;

                    /**
                     * Verifies a GetAttributesConfigRequest message.
                     * @param message Plain 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 GetAttributesConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetAttributesConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.GetAttributesConfigRequest;

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

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

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

                /** Properties of an UpdateAttributesConfigRequest. */
                interface IUpdateAttributesConfigRequest {

                    /** UpdateAttributesConfigRequest attributesConfig */
                    attributesConfig?: (google.cloud.retail.v2.IAttributesConfig|null);

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

                /** Represents an UpdateAttributesConfigRequest. */
                class UpdateAttributesConfigRequest implements IUpdateAttributesConfigRequest {

                    /**
                     * Constructs a new UpdateAttributesConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IUpdateAttributesConfigRequest);

                    /** UpdateAttributesConfigRequest attributesConfig. */
                    public attributesConfig?: (google.cloud.retail.v2.IAttributesConfig|null);

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

                    /**
                     * Creates a new UpdateAttributesConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateAttributesConfigRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IUpdateAttributesConfigRequest): google.cloud.retail.v2.UpdateAttributesConfigRequest;

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

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

                    /**
                     * Decodes an UpdateAttributesConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateAttributesConfigRequest
                     * @throws {Error} If the payload is not 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.retail.v2.UpdateAttributesConfigRequest;

                    /**
                     * Decodes an UpdateAttributesConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateAttributesConfigRequest
                     * @throws {Error} If the payload 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.retail.v2.UpdateAttributesConfigRequest;

                    /**
                     * Verifies an UpdateAttributesConfigRequest message.
                     * @param message Plain 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 UpdateAttributesConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateAttributesConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.UpdateAttributesConfigRequest;

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

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

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

                /** Properties of an AddCatalogAttributeRequest. */
                interface IAddCatalogAttributeRequest {

                    /** AddCatalogAttributeRequest attributesConfig */
                    attributesConfig?: (string|null);

                    /** AddCatalogAttributeRequest catalogAttribute */
                    catalogAttribute?: (google.cloud.retail.v2.ICatalogAttribute|null);
                }

                /** Represents an AddCatalogAttributeRequest. */
                class AddCatalogAttributeRequest implements IAddCatalogAttributeRequest {

                    /**
                     * Constructs a new AddCatalogAttributeRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IAddCatalogAttributeRequest);

                    /** AddCatalogAttributeRequest attributesConfig. */
                    public attributesConfig: string;

                    /** AddCatalogAttributeRequest catalogAttribute. */
                    public catalogAttribute?: (google.cloud.retail.v2.ICatalogAttribute|null);

                    /**
                     * Creates a new AddCatalogAttributeRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns AddCatalogAttributeRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IAddCatalogAttributeRequest): google.cloud.retail.v2.AddCatalogAttributeRequest;

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

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

                    /**
                     * Decodes an AddCatalogAttributeRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns AddCatalogAttributeRequest
                     * @throws {Error} If the payload is not 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.retail.v2.AddCatalogAttributeRequest;

                    /**
                     * Decodes an AddCatalogAttributeRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns AddCatalogAttributeRequest
                     * @throws {Error} If the payload 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.retail.v2.AddCatalogAttributeRequest;

                    /**
                     * Verifies an AddCatalogAttributeRequest message.
                     * @param message Plain 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 AddCatalogAttributeRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns AddCatalogAttributeRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.AddCatalogAttributeRequest;

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

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

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

                /** Properties of a RemoveCatalogAttributeRequest. */
                interface IRemoveCatalogAttributeRequest {

                    /** RemoveCatalogAttributeRequest attributesConfig */
                    attributesConfig?: (string|null);

                    /** RemoveCatalogAttributeRequest key */
                    key?: (string|null);
                }

                /** Represents a RemoveCatalogAttributeRequest. */
                class RemoveCatalogAttributeRequest implements IRemoveCatalogAttributeRequest {

                    /**
                     * Constructs a new RemoveCatalogAttributeRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IRemoveCatalogAttributeRequest);

                    /** RemoveCatalogAttributeRequest attributesConfig. */
                    public attributesConfig: string;

                    /** RemoveCatalogAttributeRequest key. */
                    public key: string;

                    /**
                     * Creates a new RemoveCatalogAttributeRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RemoveCatalogAttributeRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IRemoveCatalogAttributeRequest): google.cloud.retail.v2.RemoveCatalogAttributeRequest;

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

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

                    /**
                     * Decodes a RemoveCatalogAttributeRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RemoveCatalogAttributeRequest
                     * @throws {Error} If the payload is not 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.retail.v2.RemoveCatalogAttributeRequest;

                    /**
                     * Decodes a RemoveCatalogAttributeRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RemoveCatalogAttributeRequest
                     * @throws {Error} If the payload 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.retail.v2.RemoveCatalogAttributeRequest;

                    /**
                     * Verifies a RemoveCatalogAttributeRequest message.
                     * @param message Plain 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 RemoveCatalogAttributeRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RemoveCatalogAttributeRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.RemoveCatalogAttributeRequest;

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

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

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

                /** Properties of a ReplaceCatalogAttributeRequest. */
                interface IReplaceCatalogAttributeRequest {

                    /** ReplaceCatalogAttributeRequest attributesConfig */
                    attributesConfig?: (string|null);

                    /** ReplaceCatalogAttributeRequest catalogAttribute */
                    catalogAttribute?: (google.cloud.retail.v2.ICatalogAttribute|null);

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

                /** Represents a ReplaceCatalogAttributeRequest. */
                class ReplaceCatalogAttributeRequest implements IReplaceCatalogAttributeRequest {

                    /**
                     * Constructs a new ReplaceCatalogAttributeRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IReplaceCatalogAttributeRequest);

                    /** ReplaceCatalogAttributeRequest attributesConfig. */
                    public attributesConfig: string;

                    /** ReplaceCatalogAttributeRequest catalogAttribute. */
                    public catalogAttribute?: (google.cloud.retail.v2.ICatalogAttribute|null);

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

                    /**
                     * Creates a new ReplaceCatalogAttributeRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ReplaceCatalogAttributeRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IReplaceCatalogAttributeRequest): google.cloud.retail.v2.ReplaceCatalogAttributeRequest;

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

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

                    /**
                     * Decodes a ReplaceCatalogAttributeRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ReplaceCatalogAttributeRequest
                     * @throws {Error} If the payload is not 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.retail.v2.ReplaceCatalogAttributeRequest;

                    /**
                     * Decodes a ReplaceCatalogAttributeRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ReplaceCatalogAttributeRequest
                     * @throws {Error} If the payload 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.retail.v2.ReplaceCatalogAttributeRequest;

                    /**
                     * Verifies a ReplaceCatalogAttributeRequest message.
                     * @param message Plain 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 ReplaceCatalogAttributeRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ReplaceCatalogAttributeRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ReplaceCatalogAttributeRequest;

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

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

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

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

                    /**
                     * Constructs a new CompletionService 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 CompletionService 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): CompletionService;

                    /**
                     * Calls CompleteQuery.
                     * @param request CompleteQueryRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and CompleteQueryResponse
                     */
                    public completeQuery(request: google.cloud.retail.v2.ICompleteQueryRequest, callback: google.cloud.retail.v2.CompletionService.CompleteQueryCallback): void;

                    /**
                     * Calls CompleteQuery.
                     * @param request CompleteQueryRequest message or plain object
                     * @returns Promise
                     */
                    public completeQuery(request: google.cloud.retail.v2.ICompleteQueryRequest): Promise<google.cloud.retail.v2.CompleteQueryResponse>;

                    /**
                     * Calls ImportCompletionData.
                     * @param request ImportCompletionDataRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public importCompletionData(request: google.cloud.retail.v2.IImportCompletionDataRequest, callback: google.cloud.retail.v2.CompletionService.ImportCompletionDataCallback): void;

                    /**
                     * Calls ImportCompletionData.
                     * @param request ImportCompletionDataRequest message or plain object
                     * @returns Promise
                     */
                    public importCompletionData(request: google.cloud.retail.v2.IImportCompletionDataRequest): Promise<google.longrunning.Operation>;
                }

                namespace CompletionService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.CompletionService|completeQuery}.
                     * @param error Error, if any
                     * @param [response] CompleteQueryResponse
                     */
                    type CompleteQueryCallback = (error: (Error|null), response?: google.cloud.retail.v2.CompleteQueryResponse) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.CompletionService|importCompletionData}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type ImportCompletionDataCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;
                }

                /** Properties of a CompleteQueryRequest. */
                interface ICompleteQueryRequest {

                    /** CompleteQueryRequest catalog */
                    catalog?: (string|null);

                    /** CompleteQueryRequest query */
                    query?: (string|null);

                    /** CompleteQueryRequest visitorId */
                    visitorId?: (string|null);

                    /** CompleteQueryRequest languageCodes */
                    languageCodes?: (string[]|null);

                    /** CompleteQueryRequest deviceType */
                    deviceType?: (string|null);

                    /** CompleteQueryRequest dataset */
                    dataset?: (string|null);

                    /** CompleteQueryRequest maxSuggestions */
                    maxSuggestions?: (number|null);

                    /** CompleteQueryRequest enableAttributeSuggestions */
                    enableAttributeSuggestions?: (boolean|null);

                    /** CompleteQueryRequest entity */
                    entity?: (string|null);
                }

                /** Represents a CompleteQueryRequest. */
                class CompleteQueryRequest implements ICompleteQueryRequest {

                    /**
                     * Constructs a new CompleteQueryRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.ICompleteQueryRequest);

                    /** CompleteQueryRequest catalog. */
                    public catalog: string;

                    /** CompleteQueryRequest query. */
                    public query: string;

                    /** CompleteQueryRequest visitorId. */
                    public visitorId: string;

                    /** CompleteQueryRequest languageCodes. */
                    public languageCodes: string[];

                    /** CompleteQueryRequest deviceType. */
                    public deviceType: string;

                    /** CompleteQueryRequest dataset. */
                    public dataset: string;

                    /** CompleteQueryRequest maxSuggestions. */
                    public maxSuggestions: number;

                    /** CompleteQueryRequest enableAttributeSuggestions. */
                    public enableAttributeSuggestions: boolean;

                    /** CompleteQueryRequest entity. */
                    public entity: string;

                    /**
                     * Creates a new CompleteQueryRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CompleteQueryRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.ICompleteQueryRequest): google.cloud.retail.v2.CompleteQueryRequest;

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

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

                    /**
                     * Decodes a CompleteQueryRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CompleteQueryRequest
                     * @throws {Error} If the payload is not 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.retail.v2.CompleteQueryRequest;

                    /**
                     * Decodes a CompleteQueryRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CompleteQueryRequest
                     * @throws {Error} If the payload 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.retail.v2.CompleteQueryRequest;

                    /**
                     * Verifies a CompleteQueryRequest message.
                     * @param message Plain 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 CompleteQueryRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CompleteQueryRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.CompleteQueryRequest;

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

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

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

                /** Properties of a CompleteQueryResponse. */
                interface ICompleteQueryResponse {

                    /** CompleteQueryResponse completionResults */
                    completionResults?: (google.cloud.retail.v2.CompleteQueryResponse.ICompletionResult[]|null);

                    /** CompleteQueryResponse attributionToken */
                    attributionToken?: (string|null);

                    /** CompleteQueryResponse recentSearchResults */
                    recentSearchResults?: (google.cloud.retail.v2.CompleteQueryResponse.IRecentSearchResult[]|null);

                    /** CompleteQueryResponse attributeResults */
                    attributeResults?: ({ [k: string]: google.cloud.retail.v2.CompleteQueryResponse.IAttributeResult }|null);
                }

                /** Represents a CompleteQueryResponse. */
                class CompleteQueryResponse implements ICompleteQueryResponse {

                    /**
                     * Constructs a new CompleteQueryResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.ICompleteQueryResponse);

                    /** CompleteQueryResponse completionResults. */
                    public completionResults: google.cloud.retail.v2.CompleteQueryResponse.ICompletionResult[];

                    /** CompleteQueryResponse attributionToken. */
                    public attributionToken: string;

                    /** CompleteQueryResponse recentSearchResults. */
                    public recentSearchResults: google.cloud.retail.v2.CompleteQueryResponse.IRecentSearchResult[];

                    /** CompleteQueryResponse attributeResults. */
                    public attributeResults: { [k: string]: google.cloud.retail.v2.CompleteQueryResponse.IAttributeResult };

                    /**
                     * Creates a new CompleteQueryResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CompleteQueryResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2.ICompleteQueryResponse): google.cloud.retail.v2.CompleteQueryResponse;

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

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

                    /**
                     * Decodes a CompleteQueryResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CompleteQueryResponse
                     * @throws {Error} If the payload is not 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.retail.v2.CompleteQueryResponse;

                    /**
                     * Decodes a CompleteQueryResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CompleteQueryResponse
                     * @throws {Error} If the payload 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.retail.v2.CompleteQueryResponse;

                    /**
                     * Verifies a CompleteQueryResponse message.
                     * @param message Plain 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 CompleteQueryResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CompleteQueryResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.CompleteQueryResponse;

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

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

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

                namespace CompleteQueryResponse {

                    /** Properties of a CompletionResult. */
                    interface ICompletionResult {

                        /** CompletionResult suggestion */
                        suggestion?: (string|null);

                        /** CompletionResult attributes */
                        attributes?: ({ [k: string]: google.cloud.retail.v2.ICustomAttribute }|null);
                    }

                    /** Represents a CompletionResult. */
                    class CompletionResult implements ICompletionResult {

                        /**
                         * Constructs a new CompletionResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.CompleteQueryResponse.ICompletionResult);

                        /** CompletionResult suggestion. */
                        public suggestion: string;

                        /** CompletionResult attributes. */
                        public attributes: { [k: string]: google.cloud.retail.v2.ICustomAttribute };

                        /**
                         * Creates a new CompletionResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CompletionResult instance
                         */
                        public static create(properties?: google.cloud.retail.v2.CompleteQueryResponse.ICompletionResult): google.cloud.retail.v2.CompleteQueryResponse.CompletionResult;

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

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

                        /**
                         * Decodes a CompletionResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CompletionResult
                         * @throws {Error} If the payload is not 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.retail.v2.CompleteQueryResponse.CompletionResult;

                        /**
                         * Decodes a CompletionResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CompletionResult
                         * @throws {Error} If the payload 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.retail.v2.CompleteQueryResponse.CompletionResult;

                        /**
                         * Verifies a CompletionResult message.
                         * @param message Plain 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 CompletionResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CompletionResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.CompleteQueryResponse.CompletionResult;

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

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

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

                    /** Properties of a RecentSearchResult. */
                    interface IRecentSearchResult {

                        /** RecentSearchResult recentSearch */
                        recentSearch?: (string|null);
                    }

                    /** Represents a RecentSearchResult. */
                    class RecentSearchResult implements IRecentSearchResult {

                        /**
                         * Constructs a new RecentSearchResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.CompleteQueryResponse.IRecentSearchResult);

                        /** RecentSearchResult recentSearch. */
                        public recentSearch: string;

                        /**
                         * Creates a new RecentSearchResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RecentSearchResult instance
                         */
                        public static create(properties?: google.cloud.retail.v2.CompleteQueryResponse.IRecentSearchResult): google.cloud.retail.v2.CompleteQueryResponse.RecentSearchResult;

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

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

                        /**
                         * Decodes a RecentSearchResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RecentSearchResult
                         * @throws {Error} If the payload is not 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.retail.v2.CompleteQueryResponse.RecentSearchResult;

                        /**
                         * Decodes a RecentSearchResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RecentSearchResult
                         * @throws {Error} If the payload 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.retail.v2.CompleteQueryResponse.RecentSearchResult;

                        /**
                         * Verifies a RecentSearchResult message.
                         * @param message Plain 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 RecentSearchResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RecentSearchResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.CompleteQueryResponse.RecentSearchResult;

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

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

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

                    /** Properties of an AttributeResult. */
                    interface IAttributeResult {

                        /** AttributeResult suggestions */
                        suggestions?: (string[]|null);
                    }

                    /** Represents an AttributeResult. */
                    class AttributeResult implements IAttributeResult {

                        /**
                         * Constructs a new AttributeResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.CompleteQueryResponse.IAttributeResult);

                        /** AttributeResult suggestions. */
                        public suggestions: string[];

                        /**
                         * Creates a new AttributeResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AttributeResult instance
                         */
                        public static create(properties?: google.cloud.retail.v2.CompleteQueryResponse.IAttributeResult): google.cloud.retail.v2.CompleteQueryResponse.AttributeResult;

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

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

                        /**
                         * Decodes an AttributeResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AttributeResult
                         * @throws {Error} If the payload is not 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.retail.v2.CompleteQueryResponse.AttributeResult;

                        /**
                         * Decodes an AttributeResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AttributeResult
                         * @throws {Error} If the payload 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.retail.v2.CompleteQueryResponse.AttributeResult;

                        /**
                         * Verifies an AttributeResult message.
                         * @param message Plain 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 AttributeResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AttributeResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.CompleteQueryResponse.AttributeResult;

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

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

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

                /** Properties of a Control. */
                interface IControl {

                    /** Control rule */
                    rule?: (google.cloud.retail.v2.IRule|null);

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

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

                    /** Control associatedServingConfigIds */
                    associatedServingConfigIds?: (string[]|null);

                    /** Control solutionTypes */
                    solutionTypes?: (google.cloud.retail.v2.SolutionType[]|null);

                    /** Control searchSolutionUseCase */
                    searchSolutionUseCase?: (google.cloud.retail.v2.SearchSolutionUseCase[]|null);
                }

                /** Represents a Control. */
                class Control implements IControl {

                    /**
                     * Constructs a new Control.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IControl);

                    /** Control rule. */
                    public rule?: (google.cloud.retail.v2.IRule|null);

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

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

                    /** Control associatedServingConfigIds. */
                    public associatedServingConfigIds: string[];

                    /** Control solutionTypes. */
                    public solutionTypes: google.cloud.retail.v2.SolutionType[];

                    /** Control searchSolutionUseCase. */
                    public searchSolutionUseCase: google.cloud.retail.v2.SearchSolutionUseCase[];

                    /** Control control. */
                    public control?: "rule";

                    /**
                     * Creates a new Control instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Control instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IControl): google.cloud.retail.v2.Control;

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

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

                    /**
                     * Decodes a Control message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Control
                     * @throws {Error} If the payload is not 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.retail.v2.Control;

                    /**
                     * Decodes a Control message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Control
                     * @throws {Error} If the payload 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.retail.v2.Control;

                    /**
                     * Verifies a Control message.
                     * @param message Plain 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 Control message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Control
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.Control;

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

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

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

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

                    /**
                     * Constructs a new ControlService 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 ControlService 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): ControlService;

                    /**
                     * Calls CreateControl.
                     * @param request CreateControlRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Control
                     */
                    public createControl(request: google.cloud.retail.v2.ICreateControlRequest, callback: google.cloud.retail.v2.ControlService.CreateControlCallback): void;

                    /**
                     * Calls CreateControl.
                     * @param request CreateControlRequest message or plain object
                     * @returns Promise
                     */
                    public createControl(request: google.cloud.retail.v2.ICreateControlRequest): Promise<google.cloud.retail.v2.Control>;

                    /**
                     * Calls DeleteControl.
                     * @param request DeleteControlRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Empty
                     */
                    public deleteControl(request: google.cloud.retail.v2.IDeleteControlRequest, callback: google.cloud.retail.v2.ControlService.DeleteControlCallback): void;

                    /**
                     * Calls DeleteControl.
                     * @param request DeleteControlRequest message or plain object
                     * @returns Promise
                     */
                    public deleteControl(request: google.cloud.retail.v2.IDeleteControlRequest): Promise<google.protobuf.Empty>;

                    /**
                     * Calls UpdateControl.
                     * @param request UpdateControlRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Control
                     */
                    public updateControl(request: google.cloud.retail.v2.IUpdateControlRequest, callback: google.cloud.retail.v2.ControlService.UpdateControlCallback): void;

                    /**
                     * Calls UpdateControl.
                     * @param request UpdateControlRequest message or plain object
                     * @returns Promise
                     */
                    public updateControl(request: google.cloud.retail.v2.IUpdateControlRequest): Promise<google.cloud.retail.v2.Control>;

                    /**
                     * Calls GetControl.
                     * @param request GetControlRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Control
                     */
                    public getControl(request: google.cloud.retail.v2.IGetControlRequest, callback: google.cloud.retail.v2.ControlService.GetControlCallback): void;

                    /**
                     * Calls GetControl.
                     * @param request GetControlRequest message or plain object
                     * @returns Promise
                     */
                    public getControl(request: google.cloud.retail.v2.IGetControlRequest): Promise<google.cloud.retail.v2.Control>;

                    /**
                     * Calls ListControls.
                     * @param request ListControlsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListControlsResponse
                     */
                    public listControls(request: google.cloud.retail.v2.IListControlsRequest, callback: google.cloud.retail.v2.ControlService.ListControlsCallback): void;

                    /**
                     * Calls ListControls.
                     * @param request ListControlsRequest message or plain object
                     * @returns Promise
                     */
                    public listControls(request: google.cloud.retail.v2.IListControlsRequest): Promise<google.cloud.retail.v2.ListControlsResponse>;
                }

                namespace ControlService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.ControlService|createControl}.
                     * @param error Error, if any
                     * @param [response] Control
                     */
                    type CreateControlCallback = (error: (Error|null), response?: google.cloud.retail.v2.Control) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.ControlService|deleteControl}.
                     * @param error Error, if any
                     * @param [response] Empty
                     */
                    type DeleteControlCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.ControlService|updateControl}.
                     * @param error Error, if any
                     * @param [response] Control
                     */
                    type UpdateControlCallback = (error: (Error|null), response?: google.cloud.retail.v2.Control) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.ControlService|getControl}.
                     * @param error Error, if any
                     * @param [response] Control
                     */
                    type GetControlCallback = (error: (Error|null), response?: google.cloud.retail.v2.Control) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.ControlService|listControls}.
                     * @param error Error, if any
                     * @param [response] ListControlsResponse
                     */
                    type ListControlsCallback = (error: (Error|null), response?: google.cloud.retail.v2.ListControlsResponse) => void;
                }

                /** Properties of a CreateControlRequest. */
                interface ICreateControlRequest {

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

                    /** CreateControlRequest control */
                    control?: (google.cloud.retail.v2.IControl|null);

                    /** CreateControlRequest controlId */
                    controlId?: (string|null);
                }

                /** Represents a CreateControlRequest. */
                class CreateControlRequest implements ICreateControlRequest {

                    /**
                     * Constructs a new CreateControlRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.ICreateControlRequest);

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

                    /** CreateControlRequest control. */
                    public control?: (google.cloud.retail.v2.IControl|null);

                    /** CreateControlRequest controlId. */
                    public controlId: string;

                    /**
                     * Creates a new CreateControlRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CreateControlRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.ICreateControlRequest): google.cloud.retail.v2.CreateControlRequest;

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

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

                    /**
                     * Decodes a CreateControlRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CreateControlRequest
                     * @throws {Error} If the payload is not 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.retail.v2.CreateControlRequest;

                    /**
                     * Decodes a CreateControlRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CreateControlRequest
                     * @throws {Error} If the payload 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.retail.v2.CreateControlRequest;

                    /**
                     * Verifies a CreateControlRequest message.
                     * @param message Plain 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 CreateControlRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CreateControlRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.CreateControlRequest;

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

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

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

                /** Properties of an UpdateControlRequest. */
                interface IUpdateControlRequest {

                    /** UpdateControlRequest control */
                    control?: (google.cloud.retail.v2.IControl|null);

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

                /** Represents an UpdateControlRequest. */
                class UpdateControlRequest implements IUpdateControlRequest {

                    /**
                     * Constructs a new UpdateControlRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IUpdateControlRequest);

                    /** UpdateControlRequest control. */
                    public control?: (google.cloud.retail.v2.IControl|null);

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

                    /**
                     * Creates a new UpdateControlRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateControlRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IUpdateControlRequest): google.cloud.retail.v2.UpdateControlRequest;

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

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

                    /**
                     * Decodes an UpdateControlRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateControlRequest
                     * @throws {Error} If the payload is not 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.retail.v2.UpdateControlRequest;

                    /**
                     * Decodes an UpdateControlRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateControlRequest
                     * @throws {Error} If the payload 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.retail.v2.UpdateControlRequest;

                    /**
                     * Verifies an UpdateControlRequest message.
                     * @param message Plain 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 UpdateControlRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateControlRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.UpdateControlRequest;

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

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

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

                /** Properties of a DeleteControlRequest. */
                interface IDeleteControlRequest {

                    /** DeleteControlRequest name */
                    name?: (string|null);
                }

                /** Represents a DeleteControlRequest. */
                class DeleteControlRequest implements IDeleteControlRequest {

                    /**
                     * Constructs a new DeleteControlRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IDeleteControlRequest);

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

                    /**
                     * Creates a new DeleteControlRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeleteControlRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IDeleteControlRequest): google.cloud.retail.v2.DeleteControlRequest;

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

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

                    /**
                     * Decodes a DeleteControlRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeleteControlRequest
                     * @throws {Error} If the payload is not 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.retail.v2.DeleteControlRequest;

                    /**
                     * Decodes a DeleteControlRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeleteControlRequest
                     * @throws {Error} If the payload 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.retail.v2.DeleteControlRequest;

                    /**
                     * Verifies a DeleteControlRequest message.
                     * @param message Plain 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 DeleteControlRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeleteControlRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.DeleteControlRequest;

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

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

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

                /** Properties of a GetControlRequest. */
                interface IGetControlRequest {

                    /** GetControlRequest name */
                    name?: (string|null);
                }

                /** Represents a GetControlRequest. */
                class GetControlRequest implements IGetControlRequest {

                    /**
                     * Constructs a new GetControlRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IGetControlRequest);

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

                    /**
                     * Creates a new GetControlRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetControlRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IGetControlRequest): google.cloud.retail.v2.GetControlRequest;

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

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

                    /**
                     * Decodes a GetControlRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetControlRequest
                     * @throws {Error} If the payload is not 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.retail.v2.GetControlRequest;

                    /**
                     * Decodes a GetControlRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetControlRequest
                     * @throws {Error} If the payload 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.retail.v2.GetControlRequest;

                    /**
                     * Verifies a GetControlRequest message.
                     * @param message Plain 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 GetControlRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetControlRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.GetControlRequest;

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

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

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

                /** Properties of a ListControlsRequest. */
                interface IListControlsRequest {

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

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

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

                    /** ListControlsRequest filter */
                    filter?: (string|null);
                }

                /** Represents a ListControlsRequest. */
                class ListControlsRequest implements IListControlsRequest {

                    /**
                     * Constructs a new ListControlsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IListControlsRequest);

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

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

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

                    /** ListControlsRequest filter. */
                    public filter: string;

                    /**
                     * Creates a new ListControlsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListControlsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IListControlsRequest): google.cloud.retail.v2.ListControlsRequest;

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

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

                    /**
                     * Decodes a ListControlsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListControlsRequest
                     * @throws {Error} If the payload is not 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.retail.v2.ListControlsRequest;

                    /**
                     * Decodes a ListControlsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListControlsRequest
                     * @throws {Error} If the payload 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.retail.v2.ListControlsRequest;

                    /**
                     * Verifies a ListControlsRequest message.
                     * @param message Plain 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 ListControlsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListControlsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ListControlsRequest;

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

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

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

                /** Properties of a ListControlsResponse. */
                interface IListControlsResponse {

                    /** ListControlsResponse controls */
                    controls?: (google.cloud.retail.v2.IControl[]|null);

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

                /** Represents a ListControlsResponse. */
                class ListControlsResponse implements IListControlsResponse {

                    /**
                     * Constructs a new ListControlsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IListControlsResponse);

                    /** ListControlsResponse controls. */
                    public controls: google.cloud.retail.v2.IControl[];

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

                    /**
                     * Creates a new ListControlsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListControlsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IListControlsResponse): google.cloud.retail.v2.ListControlsResponse;

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

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

                    /**
                     * Decodes a ListControlsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListControlsResponse
                     * @throws {Error} If the payload is not 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.retail.v2.ListControlsResponse;

                    /**
                     * Decodes a ListControlsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListControlsResponse
                     * @throws {Error} If the payload 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.retail.v2.ListControlsResponse;

                    /**
                     * Verifies a ListControlsResponse message.
                     * @param message Plain 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 ListControlsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListControlsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ListControlsResponse;

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

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

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

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

                    /**
                     * Constructs a new ConversationalSearchService 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 ConversationalSearchService 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): ConversationalSearchService;

                    /**
                     * Calls ConversationalSearch.
                     * @param request ConversationalSearchRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ConversationalSearchResponse
                     */
                    public conversationalSearch(request: google.cloud.retail.v2.IConversationalSearchRequest, callback: google.cloud.retail.v2.ConversationalSearchService.ConversationalSearchCallback): void;

                    /**
                     * Calls ConversationalSearch.
                     * @param request ConversationalSearchRequest message or plain object
                     * @returns Promise
                     */
                    public conversationalSearch(request: google.cloud.retail.v2.IConversationalSearchRequest): Promise<google.cloud.retail.v2.ConversationalSearchResponse>;
                }

                namespace ConversationalSearchService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.ConversationalSearchService|conversationalSearch}.
                     * @param error Error, if any
                     * @param [response] ConversationalSearchResponse
                     */
                    type ConversationalSearchCallback = (error: (Error|null), response?: google.cloud.retail.v2.ConversationalSearchResponse) => void;
                }

                /** Properties of a ConversationalSearchRequest. */
                interface IConversationalSearchRequest {

                    /** ConversationalSearchRequest placement */
                    placement?: (string|null);

                    /** ConversationalSearchRequest branch */
                    branch?: (string|null);

                    /** ConversationalSearchRequest query */
                    query?: (string|null);

                    /** ConversationalSearchRequest pageCategories */
                    pageCategories?: (string[]|null);

                    /** ConversationalSearchRequest conversationId */
                    conversationId?: (string|null);

                    /** ConversationalSearchRequest searchParams */
                    searchParams?: (google.cloud.retail.v2.ConversationalSearchRequest.ISearchParams|null);

                    /** ConversationalSearchRequest visitorId */
                    visitorId?: (string|null);

                    /** ConversationalSearchRequest userInfo */
                    userInfo?: (google.cloud.retail.v2.IUserInfo|null);

                    /** ConversationalSearchRequest conversationalFilteringSpec */
                    conversationalFilteringSpec?: (google.cloud.retail.v2.ConversationalSearchRequest.IConversationalFilteringSpec|null);

                    /** ConversationalSearchRequest userLabels */
                    userLabels?: ({ [k: string]: string }|null);

                    /** ConversationalSearchRequest safetySettings */
                    safetySettings?: (google.cloud.retail.v2.ISafetySetting[]|null);
                }

                /** Represents a ConversationalSearchRequest. */
                class ConversationalSearchRequest implements IConversationalSearchRequest {

                    /**
                     * Constructs a new ConversationalSearchRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IConversationalSearchRequest);

                    /** ConversationalSearchRequest placement. */
                    public placement: string;

                    /** ConversationalSearchRequest branch. */
                    public branch: string;

                    /** ConversationalSearchRequest query. */
                    public query: string;

                    /** ConversationalSearchRequest pageCategories. */
                    public pageCategories: string[];

                    /** ConversationalSearchRequest conversationId. */
                    public conversationId: string;

                    /** ConversationalSearchRequest searchParams. */
                    public searchParams?: (google.cloud.retail.v2.ConversationalSearchRequest.ISearchParams|null);

                    /** ConversationalSearchRequest visitorId. */
                    public visitorId: string;

                    /** ConversationalSearchRequest userInfo. */
                    public userInfo?: (google.cloud.retail.v2.IUserInfo|null);

                    /** ConversationalSearchRequest conversationalFilteringSpec. */
                    public conversationalFilteringSpec?: (google.cloud.retail.v2.ConversationalSearchRequest.IConversationalFilteringSpec|null);

                    /** ConversationalSearchRequest userLabels. */
                    public userLabels: { [k: string]: string };

                    /** ConversationalSearchRequest safetySettings. */
                    public safetySettings: google.cloud.retail.v2.ISafetySetting[];

                    /**
                     * Creates a new ConversationalSearchRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ConversationalSearchRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IConversationalSearchRequest): google.cloud.retail.v2.ConversationalSearchRequest;

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

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

                    /**
                     * Decodes a ConversationalSearchRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ConversationalSearchRequest
                     * @throws {Error} If the payload is not 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.retail.v2.ConversationalSearchRequest;

                    /**
                     * Decodes a ConversationalSearchRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ConversationalSearchRequest
                     * @throws {Error} If the payload 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.retail.v2.ConversationalSearchRequest;

                    /**
                     * Verifies a ConversationalSearchRequest message.
                     * @param message Plain 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 ConversationalSearchRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ConversationalSearchRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ConversationalSearchRequest;

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

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

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

                namespace ConversationalSearchRequest {

                    /** Properties of a SearchParams. */
                    interface ISearchParams {

                        /** SearchParams filter */
                        filter?: (string|null);

                        /** SearchParams canonicalFilter */
                        canonicalFilter?: (string|null);

                        /** SearchParams sortBy */
                        sortBy?: (string|null);

                        /** SearchParams boostSpec */
                        boostSpec?: (google.cloud.retail.v2.SearchRequest.IBoostSpec|null);
                    }

                    /** Represents a SearchParams. */
                    class SearchParams implements ISearchParams {

                        /**
                         * Constructs a new SearchParams.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.ConversationalSearchRequest.ISearchParams);

                        /** SearchParams filter. */
                        public filter: string;

                        /** SearchParams canonicalFilter. */
                        public canonicalFilter: string;

                        /** SearchParams sortBy. */
                        public sortBy: string;

                        /** SearchParams boostSpec. */
                        public boostSpec?: (google.cloud.retail.v2.SearchRequest.IBoostSpec|null);

                        /**
                         * Creates a new SearchParams instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SearchParams instance
                         */
                        public static create(properties?: google.cloud.retail.v2.ConversationalSearchRequest.ISearchParams): google.cloud.retail.v2.ConversationalSearchRequest.SearchParams;

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

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

                        /**
                         * Decodes a SearchParams message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SearchParams
                         * @throws {Error} If the payload is not 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.retail.v2.ConversationalSearchRequest.SearchParams;

                        /**
                         * Decodes a SearchParams message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SearchParams
                         * @throws {Error} If the payload 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.retail.v2.ConversationalSearchRequest.SearchParams;

                        /**
                         * Verifies a SearchParams message.
                         * @param message Plain 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 SearchParams message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SearchParams
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ConversationalSearchRequest.SearchParams;

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

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

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

                    /** Properties of a UserAnswer. */
                    interface IUserAnswer {

                        /** UserAnswer textAnswer */
                        textAnswer?: (string|null);

                        /** UserAnswer selectedAnswer */
                        selectedAnswer?: (google.cloud.retail.v2.ConversationalSearchRequest.UserAnswer.ISelectedAnswer|null);
                    }

                    /** Represents a UserAnswer. */
                    class UserAnswer implements IUserAnswer {

                        /**
                         * Constructs a new UserAnswer.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.ConversationalSearchRequest.IUserAnswer);

                        /** UserAnswer textAnswer. */
                        public textAnswer?: (string|null);

                        /** UserAnswer selectedAnswer. */
                        public selectedAnswer?: (google.cloud.retail.v2.ConversationalSearchRequest.UserAnswer.ISelectedAnswer|null);

                        /** UserAnswer type. */
                        public type?: ("textAnswer"|"selectedAnswer");

                        /**
                         * Creates a new UserAnswer instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserAnswer instance
                         */
                        public static create(properties?: google.cloud.retail.v2.ConversationalSearchRequest.IUserAnswer): google.cloud.retail.v2.ConversationalSearchRequest.UserAnswer;

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

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

                        /**
                         * Decodes a UserAnswer message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserAnswer
                         * @throws {Error} If the payload is not 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.retail.v2.ConversationalSearchRequest.UserAnswer;

                        /**
                         * Decodes a UserAnswer message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserAnswer
                         * @throws {Error} If the payload 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.retail.v2.ConversationalSearchRequest.UserAnswer;

                        /**
                         * Verifies a UserAnswer message.
                         * @param message Plain 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 UserAnswer message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserAnswer
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ConversationalSearchRequest.UserAnswer;

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

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

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

                    namespace UserAnswer {

                        /** Properties of a SelectedAnswer. */
                        interface ISelectedAnswer {

                            /** SelectedAnswer productAttributeValue */
                            productAttributeValue?: (google.cloud.retail.v2.IProductAttributeValue|null);
                        }

                        /** Represents a SelectedAnswer. */
                        class SelectedAnswer implements ISelectedAnswer {

                            /**
                             * Constructs a new SelectedAnswer.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2.ConversationalSearchRequest.UserAnswer.ISelectedAnswer);

                            /** SelectedAnswer productAttributeValue. */
                            public productAttributeValue?: (google.cloud.retail.v2.IProductAttributeValue|null);

                            /**
                             * Creates a new SelectedAnswer instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns SelectedAnswer instance
                             */
                            public static create(properties?: google.cloud.retail.v2.ConversationalSearchRequest.UserAnswer.ISelectedAnswer): google.cloud.retail.v2.ConversationalSearchRequest.UserAnswer.SelectedAnswer;

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

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

                            /**
                             * Decodes a SelectedAnswer message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns SelectedAnswer
                             * @throws {Error} If the payload is not 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.retail.v2.ConversationalSearchRequest.UserAnswer.SelectedAnswer;

                            /**
                             * Decodes a SelectedAnswer message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns SelectedAnswer
                             * @throws {Error} If the payload 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.retail.v2.ConversationalSearchRequest.UserAnswer.SelectedAnswer;

                            /**
                             * Verifies a SelectedAnswer message.
                             * @param message Plain 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 SelectedAnswer message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns SelectedAnswer
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ConversationalSearchRequest.UserAnswer.SelectedAnswer;

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

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

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

                    /** Properties of a ConversationalFilteringSpec. */
                    interface IConversationalFilteringSpec {

                        /** ConversationalFilteringSpec enableConversationalFiltering */
                        enableConversationalFiltering?: (boolean|null);

                        /** ConversationalFilteringSpec userAnswer */
                        userAnswer?: (google.cloud.retail.v2.ConversationalSearchRequest.IUserAnswer|null);

                        /** ConversationalFilteringSpec conversationalFilteringMode */
                        conversationalFilteringMode?: (google.cloud.retail.v2.ConversationalSearchRequest.ConversationalFilteringSpec.Mode|keyof typeof google.cloud.retail.v2.ConversationalSearchRequest.ConversationalFilteringSpec.Mode|null);
                    }

                    /** Represents a ConversationalFilteringSpec. */
                    class ConversationalFilteringSpec implements IConversationalFilteringSpec {

                        /**
                         * Constructs a new ConversationalFilteringSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.ConversationalSearchRequest.IConversationalFilteringSpec);

                        /** ConversationalFilteringSpec enableConversationalFiltering. */
                        public enableConversationalFiltering: boolean;

                        /** ConversationalFilteringSpec userAnswer. */
                        public userAnswer?: (google.cloud.retail.v2.ConversationalSearchRequest.IUserAnswer|null);

                        /** ConversationalFilteringSpec conversationalFilteringMode. */
                        public conversationalFilteringMode: (google.cloud.retail.v2.ConversationalSearchRequest.ConversationalFilteringSpec.Mode|keyof typeof google.cloud.retail.v2.ConversationalSearchRequest.ConversationalFilteringSpec.Mode);

                        /**
                         * Creates a new ConversationalFilteringSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversationalFilteringSpec instance
                         */
                        public static create(properties?: google.cloud.retail.v2.ConversationalSearchRequest.IConversationalFilteringSpec): google.cloud.retail.v2.ConversationalSearchRequest.ConversationalFilteringSpec;

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

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

                        /**
                         * Decodes a ConversationalFilteringSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversationalFilteringSpec
                         * @throws {Error} If the payload is not 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.retail.v2.ConversationalSearchRequest.ConversationalFilteringSpec;

                        /**
                         * Decodes a ConversationalFilteringSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversationalFilteringSpec
                         * @throws {Error} If the payload 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.retail.v2.ConversationalSearchRequest.ConversationalFilteringSpec;

                        /**
                         * Verifies a ConversationalFilteringSpec message.
                         * @param message Plain 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 ConversationalFilteringSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversationalFilteringSpec
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ConversationalSearchRequest.ConversationalFilteringSpec;

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

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

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

                    namespace ConversationalFilteringSpec {

                        /** Mode enum. */
                        enum Mode {
                            MODE_UNSPECIFIED = 0,
                            DISABLED = 1,
                            ENABLED = 2,
                            CONVERSATIONAL_FILTER_ONLY = 3
                        }
                    }
                }

                /** Properties of a ConversationalSearchResponse. */
                interface IConversationalSearchResponse {

                    /** ConversationalSearchResponse userQueryTypes */
                    userQueryTypes?: (string[]|null);

                    /** ConversationalSearchResponse conversationalTextResponse */
                    conversationalTextResponse?: (string|null);

                    /** ConversationalSearchResponse followupQuestion */
                    followupQuestion?: (google.cloud.retail.v2.ConversationalSearchResponse.IFollowupQuestion|null);

                    /** ConversationalSearchResponse conversationId */
                    conversationId?: (string|null);

                    /** ConversationalSearchResponse refinedSearch */
                    refinedSearch?: (google.cloud.retail.v2.ConversationalSearchResponse.IRefinedSearch[]|null);

                    /** ConversationalSearchResponse conversationalFilteringResult */
                    conversationalFilteringResult?: (google.cloud.retail.v2.ConversationalSearchResponse.IConversationalFilteringResult|null);

                    /** ConversationalSearchResponse state */
                    state?: (google.cloud.retail.v2.ConversationalSearchResponse.State|keyof typeof google.cloud.retail.v2.ConversationalSearchResponse.State|null);
                }

                /** Represents a ConversationalSearchResponse. */
                class ConversationalSearchResponse implements IConversationalSearchResponse {

                    /**
                     * Constructs a new ConversationalSearchResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IConversationalSearchResponse);

                    /** ConversationalSearchResponse userQueryTypes. */
                    public userQueryTypes: string[];

                    /** ConversationalSearchResponse conversationalTextResponse. */
                    public conversationalTextResponse: string;

                    /** ConversationalSearchResponse followupQuestion. */
                    public followupQuestion?: (google.cloud.retail.v2.ConversationalSearchResponse.IFollowupQuestion|null);

                    /** ConversationalSearchResponse conversationId. */
                    public conversationId: string;

                    /** ConversationalSearchResponse refinedSearch. */
                    public refinedSearch: google.cloud.retail.v2.ConversationalSearchResponse.IRefinedSearch[];

                    /** ConversationalSearchResponse conversationalFilteringResult. */
                    public conversationalFilteringResult?: (google.cloud.retail.v2.ConversationalSearchResponse.IConversationalFilteringResult|null);

                    /** ConversationalSearchResponse state. */
                    public state: (google.cloud.retail.v2.ConversationalSearchResponse.State|keyof typeof google.cloud.retail.v2.ConversationalSearchResponse.State);

                    /**
                     * Creates a new ConversationalSearchResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ConversationalSearchResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IConversationalSearchResponse): google.cloud.retail.v2.ConversationalSearchResponse;

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

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

                    /**
                     * Decodes a ConversationalSearchResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ConversationalSearchResponse
                     * @throws {Error} If the payload is not 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.retail.v2.ConversationalSearchResponse;

                    /**
                     * Decodes a ConversationalSearchResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ConversationalSearchResponse
                     * @throws {Error} If the payload 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.retail.v2.ConversationalSearchResponse;

                    /**
                     * Verifies a ConversationalSearchResponse message.
                     * @param message Plain 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 ConversationalSearchResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ConversationalSearchResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ConversationalSearchResponse;

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

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

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

                namespace ConversationalSearchResponse {

                    /** Properties of a FollowupQuestion. */
                    interface IFollowupQuestion {

                        /** FollowupQuestion followupQuestion */
                        followupQuestion?: (string|null);

                        /** FollowupQuestion suggestedAnswers */
                        suggestedAnswers?: (google.cloud.retail.v2.ConversationalSearchResponse.FollowupQuestion.ISuggestedAnswer[]|null);
                    }

                    /** Represents a FollowupQuestion. */
                    class FollowupQuestion implements IFollowupQuestion {

                        /**
                         * Constructs a new FollowupQuestion.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.ConversationalSearchResponse.IFollowupQuestion);

                        /** FollowupQuestion followupQuestion. */
                        public followupQuestion: string;

                        /** FollowupQuestion suggestedAnswers. */
                        public suggestedAnswers: google.cloud.retail.v2.ConversationalSearchResponse.FollowupQuestion.ISuggestedAnswer[];

                        /**
                         * Creates a new FollowupQuestion instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FollowupQuestion instance
                         */
                        public static create(properties?: google.cloud.retail.v2.ConversationalSearchResponse.IFollowupQuestion): google.cloud.retail.v2.ConversationalSearchResponse.FollowupQuestion;

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

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

                        /**
                         * Decodes a FollowupQuestion message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FollowupQuestion
                         * @throws {Error} If the payload is not 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.retail.v2.ConversationalSearchResponse.FollowupQuestion;

                        /**
                         * Decodes a FollowupQuestion message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FollowupQuestion
                         * @throws {Error} If the payload 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.retail.v2.ConversationalSearchResponse.FollowupQuestion;

                        /**
                         * Verifies a FollowupQuestion message.
                         * @param message Plain 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 FollowupQuestion message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FollowupQuestion
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ConversationalSearchResponse.FollowupQuestion;

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

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

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

                    namespace FollowupQuestion {

                        /** Properties of a SuggestedAnswer. */
                        interface ISuggestedAnswer {

                            /** SuggestedAnswer productAttributeValue */
                            productAttributeValue?: (google.cloud.retail.v2.IProductAttributeValue|null);
                        }

                        /** Represents a SuggestedAnswer. */
                        class SuggestedAnswer implements ISuggestedAnswer {

                            /**
                             * Constructs a new SuggestedAnswer.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2.ConversationalSearchResponse.FollowupQuestion.ISuggestedAnswer);

                            /** SuggestedAnswer productAttributeValue. */
                            public productAttributeValue?: (google.cloud.retail.v2.IProductAttributeValue|null);

                            /**
                             * Creates a new SuggestedAnswer instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns SuggestedAnswer instance
                             */
                            public static create(properties?: google.cloud.retail.v2.ConversationalSearchResponse.FollowupQuestion.ISuggestedAnswer): google.cloud.retail.v2.ConversationalSearchResponse.FollowupQuestion.SuggestedAnswer;

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

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

                            /**
                             * Decodes a SuggestedAnswer message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns SuggestedAnswer
                             * @throws {Error} If the payload is not 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.retail.v2.ConversationalSearchResponse.FollowupQuestion.SuggestedAnswer;

                            /**
                             * Decodes a SuggestedAnswer message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns SuggestedAnswer
                             * @throws {Error} If the payload 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.retail.v2.ConversationalSearchResponse.FollowupQuestion.SuggestedAnswer;

                            /**
                             * Verifies a SuggestedAnswer message.
                             * @param message Plain 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 SuggestedAnswer message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns SuggestedAnswer
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ConversationalSearchResponse.FollowupQuestion.SuggestedAnswer;

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

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

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

                    /** Properties of a RefinedSearch. */
                    interface IRefinedSearch {

                        /** RefinedSearch query */
                        query?: (string|null);
                    }

                    /** Represents a RefinedSearch. */
                    class RefinedSearch implements IRefinedSearch {

                        /**
                         * Constructs a new RefinedSearch.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.ConversationalSearchResponse.IRefinedSearch);

                        /** RefinedSearch query. */
                        public query: string;

                        /**
                         * Creates a new RefinedSearch instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RefinedSearch instance
                         */
                        public static create(properties?: google.cloud.retail.v2.ConversationalSearchResponse.IRefinedSearch): google.cloud.retail.v2.ConversationalSearchResponse.RefinedSearch;

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

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

                        /**
                         * Decodes a RefinedSearch message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RefinedSearch
                         * @throws {Error} If the payload is not 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.retail.v2.ConversationalSearchResponse.RefinedSearch;

                        /**
                         * Decodes a RefinedSearch message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RefinedSearch
                         * @throws {Error} If the payload 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.retail.v2.ConversationalSearchResponse.RefinedSearch;

                        /**
                         * Verifies a RefinedSearch message.
                         * @param message Plain 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 RefinedSearch message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RefinedSearch
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ConversationalSearchResponse.RefinedSearch;

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

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

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

                    /** Properties of a ConversationalFilteringResult. */
                    interface IConversationalFilteringResult {

                        /** ConversationalFilteringResult followupQuestion */
                        followupQuestion?: (google.cloud.retail.v2.ConversationalSearchResponse.IFollowupQuestion|null);

                        /** ConversationalFilteringResult additionalFilter */
                        additionalFilter?: (google.cloud.retail.v2.ConversationalSearchResponse.ConversationalFilteringResult.IAdditionalFilter|null);
                    }

                    /** Represents a ConversationalFilteringResult. */
                    class ConversationalFilteringResult implements IConversationalFilteringResult {

                        /**
                         * Constructs a new ConversationalFilteringResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.ConversationalSearchResponse.IConversationalFilteringResult);

                        /** ConversationalFilteringResult followupQuestion. */
                        public followupQuestion?: (google.cloud.retail.v2.ConversationalSearchResponse.IFollowupQuestion|null);

                        /** ConversationalFilteringResult additionalFilter. */
                        public additionalFilter?: (google.cloud.retail.v2.ConversationalSearchResponse.ConversationalFilteringResult.IAdditionalFilter|null);

                        /**
                         * Creates a new ConversationalFilteringResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversationalFilteringResult instance
                         */
                        public static create(properties?: google.cloud.retail.v2.ConversationalSearchResponse.IConversationalFilteringResult): google.cloud.retail.v2.ConversationalSearchResponse.ConversationalFilteringResult;

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

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

                        /**
                         * Decodes a ConversationalFilteringResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversationalFilteringResult
                         * @throws {Error} If the payload is not 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.retail.v2.ConversationalSearchResponse.ConversationalFilteringResult;

                        /**
                         * Decodes a ConversationalFilteringResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversationalFilteringResult
                         * @throws {Error} If the payload 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.retail.v2.ConversationalSearchResponse.ConversationalFilteringResult;

                        /**
                         * Verifies a ConversationalFilteringResult message.
                         * @param message Plain 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 ConversationalFilteringResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversationalFilteringResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ConversationalSearchResponse.ConversationalFilteringResult;

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

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

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

                    namespace ConversationalFilteringResult {

                        /** Properties of an AdditionalFilter. */
                        interface IAdditionalFilter {

                            /** AdditionalFilter productAttributeValue */
                            productAttributeValue?: (google.cloud.retail.v2.IProductAttributeValue|null);
                        }

                        /** Represents an AdditionalFilter. */
                        class AdditionalFilter implements IAdditionalFilter {

                            /**
                             * Constructs a new AdditionalFilter.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2.ConversationalSearchResponse.ConversationalFilteringResult.IAdditionalFilter);

                            /** AdditionalFilter productAttributeValue. */
                            public productAttributeValue?: (google.cloud.retail.v2.IProductAttributeValue|null);

                            /**
                             * Creates a new AdditionalFilter instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns AdditionalFilter instance
                             */
                            public static create(properties?: google.cloud.retail.v2.ConversationalSearchResponse.ConversationalFilteringResult.IAdditionalFilter): google.cloud.retail.v2.ConversationalSearchResponse.ConversationalFilteringResult.AdditionalFilter;

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

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

                            /**
                             * Decodes an AdditionalFilter message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns AdditionalFilter
                             * @throws {Error} If the payload is not 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.retail.v2.ConversationalSearchResponse.ConversationalFilteringResult.AdditionalFilter;

                            /**
                             * Decodes an AdditionalFilter message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns AdditionalFilter
                             * @throws {Error} If the payload 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.retail.v2.ConversationalSearchResponse.ConversationalFilteringResult.AdditionalFilter;

                            /**
                             * Verifies an AdditionalFilter message.
                             * @param message Plain 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 AdditionalFilter message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns AdditionalFilter
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ConversationalSearchResponse.ConversationalFilteringResult.AdditionalFilter;

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

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

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

                    /** State enum. */
                    enum State {
                        STATE_UNSPECIFIED = 0,
                        STREAMING = 1,
                        SUCCEEDED = 2
                    }
                }

                /** HarmCategory enum. */
                enum HarmCategory {
                    HARM_CATEGORY_UNSPECIFIED = 0,
                    HARM_CATEGORY_HATE_SPEECH = 1,
                    HARM_CATEGORY_DANGEROUS_CONTENT = 2,
                    HARM_CATEGORY_HARASSMENT = 3,
                    HARM_CATEGORY_SEXUALLY_EXPLICIT = 4,
                    HARM_CATEGORY_CIVIC_INTEGRITY = 5
                }

                /** Properties of a SafetySetting. */
                interface ISafetySetting {

                    /** SafetySetting category */
                    category?: (google.cloud.retail.v2.HarmCategory|keyof typeof google.cloud.retail.v2.HarmCategory|null);

                    /** SafetySetting threshold */
                    threshold?: (google.cloud.retail.v2.SafetySetting.HarmBlockThreshold|keyof typeof google.cloud.retail.v2.SafetySetting.HarmBlockThreshold|null);

                    /** SafetySetting method */
                    method?: (google.cloud.retail.v2.SafetySetting.HarmBlockMethod|keyof typeof google.cloud.retail.v2.SafetySetting.HarmBlockMethod|null);
                }

                /** Represents a SafetySetting. */
                class SafetySetting implements ISafetySetting {

                    /**
                     * Constructs a new SafetySetting.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.ISafetySetting);

                    /** SafetySetting category. */
                    public category: (google.cloud.retail.v2.HarmCategory|keyof typeof google.cloud.retail.v2.HarmCategory);

                    /** SafetySetting threshold. */
                    public threshold: (google.cloud.retail.v2.SafetySetting.HarmBlockThreshold|keyof typeof google.cloud.retail.v2.SafetySetting.HarmBlockThreshold);

                    /** SafetySetting method. */
                    public method: (google.cloud.retail.v2.SafetySetting.HarmBlockMethod|keyof typeof google.cloud.retail.v2.SafetySetting.HarmBlockMethod);

                    /**
                     * Creates a new SafetySetting instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SafetySetting instance
                     */
                    public static create(properties?: google.cloud.retail.v2.ISafetySetting): google.cloud.retail.v2.SafetySetting;

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

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

                    /**
                     * Decodes a SafetySetting message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SafetySetting
                     * @throws {Error} If the payload is not 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.retail.v2.SafetySetting;

                    /**
                     * Decodes a SafetySetting message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SafetySetting
                     * @throws {Error} If the payload 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.retail.v2.SafetySetting;

                    /**
                     * Verifies a SafetySetting message.
                     * @param message Plain 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 SafetySetting message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SafetySetting
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.SafetySetting;

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

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

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

                namespace SafetySetting {

                    /** HarmBlockThreshold enum. */
                    enum HarmBlockThreshold {
                        HARM_BLOCK_THRESHOLD_UNSPECIFIED = 0,
                        BLOCK_LOW_AND_ABOVE = 1,
                        BLOCK_MEDIUM_AND_ABOVE = 2,
                        BLOCK_ONLY_HIGH = 3,
                        BLOCK_NONE = 4,
                        OFF = 5
                    }

                    /** HarmBlockMethod enum. */
                    enum HarmBlockMethod {
                        HARM_BLOCK_METHOD_UNSPECIFIED = 0,
                        SEVERITY = 1,
                        PROBABILITY = 2
                    }
                }

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

                    /**
                     * Constructs a new SearchService 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 SearchService 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): SearchService;

                    /**
                     * Calls Search.
                     * @param request SearchRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and SearchResponse
                     */
                    public search(request: google.cloud.retail.v2.ISearchRequest, callback: google.cloud.retail.v2.SearchService.SearchCallback): void;

                    /**
                     * Calls Search.
                     * @param request SearchRequest message or plain object
                     * @returns Promise
                     */
                    public search(request: google.cloud.retail.v2.ISearchRequest): Promise<google.cloud.retail.v2.SearchResponse>;
                }

                namespace SearchService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.SearchService|search}.
                     * @param error Error, if any
                     * @param [response] SearchResponse
                     */
                    type SearchCallback = (error: (Error|null), response?: google.cloud.retail.v2.SearchResponse) => void;
                }

                /** Properties of a ProductAttributeValue. */
                interface IProductAttributeValue {

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

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

                /** Represents a ProductAttributeValue. */
                class ProductAttributeValue implements IProductAttributeValue {

                    /**
                     * Constructs a new ProductAttributeValue.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IProductAttributeValue);

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

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

                    /**
                     * Creates a new ProductAttributeValue instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ProductAttributeValue instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IProductAttributeValue): google.cloud.retail.v2.ProductAttributeValue;

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

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

                    /**
                     * Decodes a ProductAttributeValue message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ProductAttributeValue
                     * @throws {Error} If the payload is not 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.retail.v2.ProductAttributeValue;

                    /**
                     * Decodes a ProductAttributeValue message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ProductAttributeValue
                     * @throws {Error} If the payload 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.retail.v2.ProductAttributeValue;

                    /**
                     * Verifies a ProductAttributeValue message.
                     * @param message Plain 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 ProductAttributeValue message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ProductAttributeValue
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ProductAttributeValue;

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

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

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

                /** Properties of a ProductAttributeInterval. */
                interface IProductAttributeInterval {

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

                    /** ProductAttributeInterval interval */
                    interval?: (google.cloud.retail.v2.IInterval|null);
                }

                /** Represents a ProductAttributeInterval. */
                class ProductAttributeInterval implements IProductAttributeInterval {

                    /**
                     * Constructs a new ProductAttributeInterval.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IProductAttributeInterval);

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

                    /** ProductAttributeInterval interval. */
                    public interval?: (google.cloud.retail.v2.IInterval|null);

                    /**
                     * Creates a new ProductAttributeInterval instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ProductAttributeInterval instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IProductAttributeInterval): google.cloud.retail.v2.ProductAttributeInterval;

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

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

                    /**
                     * Decodes a ProductAttributeInterval message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ProductAttributeInterval
                     * @throws {Error} If the payload is not 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.retail.v2.ProductAttributeInterval;

                    /**
                     * Decodes a ProductAttributeInterval message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ProductAttributeInterval
                     * @throws {Error} If the payload 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.retail.v2.ProductAttributeInterval;

                    /**
                     * Verifies a ProductAttributeInterval message.
                     * @param message Plain 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 ProductAttributeInterval message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ProductAttributeInterval
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ProductAttributeInterval;

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

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

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

                /** Properties of a Tile. */
                interface ITile {

                    /** Tile productAttributeValue */
                    productAttributeValue?: (google.cloud.retail.v2.IProductAttributeValue|null);

                    /** Tile productAttributeInterval */
                    productAttributeInterval?: (google.cloud.retail.v2.IProductAttributeInterval|null);

                    /** Tile representativeProductId */
                    representativeProductId?: (string|null);
                }

                /** Represents a Tile. */
                class Tile implements ITile {

                    /**
                     * Constructs a new Tile.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.ITile);

                    /** Tile productAttributeValue. */
                    public productAttributeValue?: (google.cloud.retail.v2.IProductAttributeValue|null);

                    /** Tile productAttributeInterval. */
                    public productAttributeInterval?: (google.cloud.retail.v2.IProductAttributeInterval|null);

                    /** Tile representativeProductId. */
                    public representativeProductId: string;

                    /** Tile productAttribute. */
                    public productAttribute?: ("productAttributeValue"|"productAttributeInterval");

                    /**
                     * Creates a new Tile instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Tile instance
                     */
                    public static create(properties?: google.cloud.retail.v2.ITile): google.cloud.retail.v2.Tile;

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

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

                    /**
                     * Decodes a Tile message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Tile
                     * @throws {Error} If the payload is not 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.retail.v2.Tile;

                    /**
                     * Decodes a Tile message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Tile
                     * @throws {Error} If the payload 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.retail.v2.Tile;

                    /**
                     * Verifies a Tile message.
                     * @param message Plain 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 Tile message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Tile
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.Tile;

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

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

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

                /** Properties of a SearchRequest. */
                interface ISearchRequest {

                    /** SearchRequest placement */
                    placement?: (string|null);

                    /** SearchRequest branch */
                    branch?: (string|null);

                    /** SearchRequest query */
                    query?: (string|null);

                    /** SearchRequest visitorId */
                    visitorId?: (string|null);

                    /** SearchRequest userInfo */
                    userInfo?: (google.cloud.retail.v2.IUserInfo|null);

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

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

                    /** SearchRequest offset */
                    offset?: (number|null);

                    /** SearchRequest filter */
                    filter?: (string|null);

                    /** SearchRequest canonicalFilter */
                    canonicalFilter?: (string|null);

                    /** SearchRequest orderBy */
                    orderBy?: (string|null);

                    /** SearchRequest facetSpecs */
                    facetSpecs?: (google.cloud.retail.v2.SearchRequest.IFacetSpec[]|null);

                    /** SearchRequest dynamicFacetSpec */
                    dynamicFacetSpec?: (google.cloud.retail.v2.SearchRequest.IDynamicFacetSpec|null);

                    /** SearchRequest boostSpec */
                    boostSpec?: (google.cloud.retail.v2.SearchRequest.IBoostSpec|null);

                    /** SearchRequest queryExpansionSpec */
                    queryExpansionSpec?: (google.cloud.retail.v2.SearchRequest.IQueryExpansionSpec|null);

                    /** SearchRequest variantRollupKeys */
                    variantRollupKeys?: (string[]|null);

                    /** SearchRequest pageCategories */
                    pageCategories?: (string[]|null);

                    /** SearchRequest searchMode */
                    searchMode?: (google.cloud.retail.v2.SearchRequest.SearchMode|keyof typeof google.cloud.retail.v2.SearchRequest.SearchMode|null);

                    /** SearchRequest personalizationSpec */
                    personalizationSpec?: (google.cloud.retail.v2.SearchRequest.IPersonalizationSpec|null);

                    /** SearchRequest labels */
                    labels?: ({ [k: string]: string }|null);

                    /** SearchRequest spellCorrectionSpec */
                    spellCorrectionSpec?: (google.cloud.retail.v2.SearchRequest.ISpellCorrectionSpec|null);

                    /** SearchRequest entity */
                    entity?: (string|null);

                    /** SearchRequest conversationalSearchSpec */
                    conversationalSearchSpec?: (google.cloud.retail.v2.SearchRequest.IConversationalSearchSpec|null);

                    /** SearchRequest tileNavigationSpec */
                    tileNavigationSpec?: (google.cloud.retail.v2.SearchRequest.ITileNavigationSpec|null);

                    /** SearchRequest languageCode */
                    languageCode?: (string|null);

                    /** SearchRequest regionCode */
                    regionCode?: (string|null);

                    /** SearchRequest placeId */
                    placeId?: (string|null);

                    /** SearchRequest userAttributes */
                    userAttributes?: ({ [k: string]: google.cloud.retail.v2.IStringList }|null);
                }

                /** Represents a SearchRequest. */
                class SearchRequest implements ISearchRequest {

                    /**
                     * Constructs a new SearchRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.ISearchRequest);

                    /** SearchRequest placement. */
                    public placement: string;

                    /** SearchRequest branch. */
                    public branch: string;

                    /** SearchRequest query. */
                    public query: string;

                    /** SearchRequest visitorId. */
                    public visitorId: string;

                    /** SearchRequest userInfo. */
                    public userInfo?: (google.cloud.retail.v2.IUserInfo|null);

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

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

                    /** SearchRequest offset. */
                    public offset: number;

                    /** SearchRequest filter. */
                    public filter: string;

                    /** SearchRequest canonicalFilter. */
                    public canonicalFilter: string;

                    /** SearchRequest orderBy. */
                    public orderBy: string;

                    /** SearchRequest facetSpecs. */
                    public facetSpecs: google.cloud.retail.v2.SearchRequest.IFacetSpec[];

                    /** SearchRequest dynamicFacetSpec. */
                    public dynamicFacetSpec?: (google.cloud.retail.v2.SearchRequest.IDynamicFacetSpec|null);

                    /** SearchRequest boostSpec. */
                    public boostSpec?: (google.cloud.retail.v2.SearchRequest.IBoostSpec|null);

                    /** SearchRequest queryExpansionSpec. */
                    public queryExpansionSpec?: (google.cloud.retail.v2.SearchRequest.IQueryExpansionSpec|null);

                    /** SearchRequest variantRollupKeys. */
                    public variantRollupKeys: string[];

                    /** SearchRequest pageCategories. */
                    public pageCategories: string[];

                    /** SearchRequest searchMode. */
                    public searchMode: (google.cloud.retail.v2.SearchRequest.SearchMode|keyof typeof google.cloud.retail.v2.SearchRequest.SearchMode);

                    /** SearchRequest personalizationSpec. */
                    public personalizationSpec?: (google.cloud.retail.v2.SearchRequest.IPersonalizationSpec|null);

                    /** SearchRequest labels. */
                    public labels: { [k: string]: string };

                    /** SearchRequest spellCorrectionSpec. */
                    public spellCorrectionSpec?: (google.cloud.retail.v2.SearchRequest.ISpellCorrectionSpec|null);

                    /** SearchRequest entity. */
                    public entity: string;

                    /** SearchRequest conversationalSearchSpec. */
                    public conversationalSearchSpec?: (google.cloud.retail.v2.SearchRequest.IConversationalSearchSpec|null);

                    /** SearchRequest tileNavigationSpec. */
                    public tileNavigationSpec?: (google.cloud.retail.v2.SearchRequest.ITileNavigationSpec|null);

                    /** SearchRequest languageCode. */
                    public languageCode: string;

                    /** SearchRequest regionCode. */
                    public regionCode: string;

                    /** SearchRequest placeId. */
                    public placeId: string;

                    /** SearchRequest userAttributes. */
                    public userAttributes: { [k: string]: google.cloud.retail.v2.IStringList };

                    /**
                     * Creates a new SearchRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SearchRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.ISearchRequest): google.cloud.retail.v2.SearchRequest;

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

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

                    /**
                     * Decodes a SearchRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SearchRequest
                     * @throws {Error} If the payload is not 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.retail.v2.SearchRequest;

                    /**
                     * Decodes a SearchRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SearchRequest
                     * @throws {Error} If the payload 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.retail.v2.SearchRequest;

                    /**
                     * Verifies a SearchRequest message.
                     * @param message Plain 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 SearchRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SearchRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.SearchRequest;

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

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

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

                namespace SearchRequest {

                    /** Properties of a FacetSpec. */
                    interface IFacetSpec {

                        /** FacetSpec facetKey */
                        facetKey?: (google.cloud.retail.v2.SearchRequest.FacetSpec.IFacetKey|null);

                        /** FacetSpec limit */
                        limit?: (number|null);

                        /** FacetSpec excludedFilterKeys */
                        excludedFilterKeys?: (string[]|null);

                        /** FacetSpec enableDynamicPosition */
                        enableDynamicPosition?: (boolean|null);
                    }

                    /** Represents a FacetSpec. */
                    class FacetSpec implements IFacetSpec {

                        /**
                         * Constructs a new FacetSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.SearchRequest.IFacetSpec);

                        /** FacetSpec facetKey. */
                        public facetKey?: (google.cloud.retail.v2.SearchRequest.FacetSpec.IFacetKey|null);

                        /** FacetSpec limit. */
                        public limit: number;

                        /** FacetSpec excludedFilterKeys. */
                        public excludedFilterKeys: string[];

                        /** FacetSpec enableDynamicPosition. */
                        public enableDynamicPosition: boolean;

                        /**
                         * Creates a new FacetSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FacetSpec instance
                         */
                        public static create(properties?: google.cloud.retail.v2.SearchRequest.IFacetSpec): google.cloud.retail.v2.SearchRequest.FacetSpec;

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

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

                        /**
                         * Decodes a FacetSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FacetSpec
                         * @throws {Error} If the payload is not 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.retail.v2.SearchRequest.FacetSpec;

                        /**
                         * Decodes a FacetSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FacetSpec
                         * @throws {Error} If the payload 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.retail.v2.SearchRequest.FacetSpec;

                        /**
                         * Verifies a FacetSpec message.
                         * @param message Plain 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 FacetSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FacetSpec
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.SearchRequest.FacetSpec;

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

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

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

                    namespace FacetSpec {

                        /** Properties of a FacetKey. */
                        interface IFacetKey {

                            /** FacetKey key */
                            key?: (string|null);

                            /** FacetKey intervals */
                            intervals?: (google.cloud.retail.v2.IInterval[]|null);

                            /** FacetKey restrictedValues */
                            restrictedValues?: (string[]|null);

                            /** FacetKey prefixes */
                            prefixes?: (string[]|null);

                            /** FacetKey contains */
                            contains?: (string[]|null);

                            /** FacetKey caseInsensitive */
                            caseInsensitive?: (boolean|null);

                            /** FacetKey orderBy */
                            orderBy?: (string|null);

                            /** FacetKey query */
                            query?: (string|null);

                            /** FacetKey returnMinMax */
                            returnMinMax?: (boolean|null);
                        }

                        /** Represents a FacetKey. */
                        class FacetKey implements IFacetKey {

                            /**
                             * Constructs a new FacetKey.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2.SearchRequest.FacetSpec.IFacetKey);

                            /** FacetKey key. */
                            public key: string;

                            /** FacetKey intervals. */
                            public intervals: google.cloud.retail.v2.IInterval[];

                            /** FacetKey restrictedValues. */
                            public restrictedValues: string[];

                            /** FacetKey prefixes. */
                            public prefixes: string[];

                            /** FacetKey contains. */
                            public contains: string[];

                            /** FacetKey caseInsensitive. */
                            public caseInsensitive: boolean;

                            /** FacetKey orderBy. */
                            public orderBy: string;

                            /** FacetKey query. */
                            public query: string;

                            /** FacetKey returnMinMax. */
                            public returnMinMax: boolean;

                            /**
                             * Creates a new FacetKey instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns FacetKey instance
                             */
                            public static create(properties?: google.cloud.retail.v2.SearchRequest.FacetSpec.IFacetKey): google.cloud.retail.v2.SearchRequest.FacetSpec.FacetKey;

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

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

                            /**
                             * Decodes a FacetKey message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns FacetKey
                             * @throws {Error} If the payload is not 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.retail.v2.SearchRequest.FacetSpec.FacetKey;

                            /**
                             * Decodes a FacetKey message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns FacetKey
                             * @throws {Error} If the payload 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.retail.v2.SearchRequest.FacetSpec.FacetKey;

                            /**
                             * Verifies a FacetKey message.
                             * @param message Plain 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 FacetKey message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns FacetKey
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.SearchRequest.FacetSpec.FacetKey;

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

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

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

                    /** Properties of a DynamicFacetSpec. */
                    interface IDynamicFacetSpec {

                        /** DynamicFacetSpec mode */
                        mode?: (google.cloud.retail.v2.SearchRequest.DynamicFacetSpec.Mode|keyof typeof google.cloud.retail.v2.SearchRequest.DynamicFacetSpec.Mode|null);
                    }

                    /** Represents a DynamicFacetSpec. */
                    class DynamicFacetSpec implements IDynamicFacetSpec {

                        /**
                         * Constructs a new DynamicFacetSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.SearchRequest.IDynamicFacetSpec);

                        /** DynamicFacetSpec mode. */
                        public mode: (google.cloud.retail.v2.SearchRequest.DynamicFacetSpec.Mode|keyof typeof google.cloud.retail.v2.SearchRequest.DynamicFacetSpec.Mode);

                        /**
                         * Creates a new DynamicFacetSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DynamicFacetSpec instance
                         */
                        public static create(properties?: google.cloud.retail.v2.SearchRequest.IDynamicFacetSpec): google.cloud.retail.v2.SearchRequest.DynamicFacetSpec;

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

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

                        /**
                         * Decodes a DynamicFacetSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DynamicFacetSpec
                         * @throws {Error} If the payload is not 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.retail.v2.SearchRequest.DynamicFacetSpec;

                        /**
                         * Decodes a DynamicFacetSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DynamicFacetSpec
                         * @throws {Error} If the payload 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.retail.v2.SearchRequest.DynamicFacetSpec;

                        /**
                         * Verifies a DynamicFacetSpec message.
                         * @param message Plain 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 DynamicFacetSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DynamicFacetSpec
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.SearchRequest.DynamicFacetSpec;

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

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

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

                    namespace DynamicFacetSpec {

                        /** Mode enum. */
                        enum Mode {
                            MODE_UNSPECIFIED = 0,
                            DISABLED = 1,
                            ENABLED = 2
                        }
                    }

                    /** Properties of a BoostSpec. */
                    interface IBoostSpec {

                        /** BoostSpec conditionBoostSpecs */
                        conditionBoostSpecs?: (google.cloud.retail.v2.SearchRequest.BoostSpec.IConditionBoostSpec[]|null);

                        /** BoostSpec skipBoostSpecValidation */
                        skipBoostSpecValidation?: (boolean|null);
                    }

                    /** Represents a BoostSpec. */
                    class BoostSpec implements IBoostSpec {

                        /**
                         * Constructs a new BoostSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.SearchRequest.IBoostSpec);

                        /** BoostSpec conditionBoostSpecs. */
                        public conditionBoostSpecs: google.cloud.retail.v2.SearchRequest.BoostSpec.IConditionBoostSpec[];

                        /** BoostSpec skipBoostSpecValidation. */
                        public skipBoostSpecValidation?: (boolean|null);

                        /**
                         * Creates a new BoostSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BoostSpec instance
                         */
                        public static create(properties?: google.cloud.retail.v2.SearchRequest.IBoostSpec): google.cloud.retail.v2.SearchRequest.BoostSpec;

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

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

                        /**
                         * Decodes a BoostSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BoostSpec
                         * @throws {Error} If the payload is not 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.retail.v2.SearchRequest.BoostSpec;

                        /**
                         * Decodes a BoostSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BoostSpec
                         * @throws {Error} If the payload 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.retail.v2.SearchRequest.BoostSpec;

                        /**
                         * Verifies a BoostSpec message.
                         * @param message Plain 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 BoostSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BoostSpec
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.SearchRequest.BoostSpec;

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

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

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

                    namespace BoostSpec {

                        /** Properties of a ConditionBoostSpec. */
                        interface IConditionBoostSpec {

                            /** ConditionBoostSpec condition */
                            condition?: (string|null);

                            /** ConditionBoostSpec boost */
                            boost?: (number|null);
                        }

                        /** Represents a ConditionBoostSpec. */
                        class ConditionBoostSpec implements IConditionBoostSpec {

                            /**
                             * Constructs a new ConditionBoostSpec.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2.SearchRequest.BoostSpec.IConditionBoostSpec);

                            /** ConditionBoostSpec condition. */
                            public condition: string;

                            /** ConditionBoostSpec boost. */
                            public boost: number;

                            /**
                             * Creates a new ConditionBoostSpec instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ConditionBoostSpec instance
                             */
                            public static create(properties?: google.cloud.retail.v2.SearchRequest.BoostSpec.IConditionBoostSpec): google.cloud.retail.v2.SearchRequest.BoostSpec.ConditionBoostSpec;

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

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

                            /**
                             * Decodes a ConditionBoostSpec message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ConditionBoostSpec
                             * @throws {Error} If the payload is not 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.retail.v2.SearchRequest.BoostSpec.ConditionBoostSpec;

                            /**
                             * Decodes a ConditionBoostSpec message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ConditionBoostSpec
                             * @throws {Error} If the payload 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.retail.v2.SearchRequest.BoostSpec.ConditionBoostSpec;

                            /**
                             * Verifies a ConditionBoostSpec message.
                             * @param message Plain 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 ConditionBoostSpec message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ConditionBoostSpec
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.SearchRequest.BoostSpec.ConditionBoostSpec;

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

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

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

                    /** Properties of a QueryExpansionSpec. */
                    interface IQueryExpansionSpec {

                        /** QueryExpansionSpec condition */
                        condition?: (google.cloud.retail.v2.SearchRequest.QueryExpansionSpec.Condition|keyof typeof google.cloud.retail.v2.SearchRequest.QueryExpansionSpec.Condition|null);

                        /** QueryExpansionSpec pinUnexpandedResults */
                        pinUnexpandedResults?: (boolean|null);
                    }

                    /** Represents a QueryExpansionSpec. */
                    class QueryExpansionSpec implements IQueryExpansionSpec {

                        /**
                         * Constructs a new QueryExpansionSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.SearchRequest.IQueryExpansionSpec);

                        /** QueryExpansionSpec condition. */
                        public condition: (google.cloud.retail.v2.SearchRequest.QueryExpansionSpec.Condition|keyof typeof google.cloud.retail.v2.SearchRequest.QueryExpansionSpec.Condition);

                        /** QueryExpansionSpec pinUnexpandedResults. */
                        public pinUnexpandedResults: boolean;

                        /**
                         * Creates a new QueryExpansionSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns QueryExpansionSpec instance
                         */
                        public static create(properties?: google.cloud.retail.v2.SearchRequest.IQueryExpansionSpec): google.cloud.retail.v2.SearchRequest.QueryExpansionSpec;

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

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

                        /**
                         * Decodes a QueryExpansionSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns QueryExpansionSpec
                         * @throws {Error} If the payload is not 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.retail.v2.SearchRequest.QueryExpansionSpec;

                        /**
                         * Decodes a QueryExpansionSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns QueryExpansionSpec
                         * @throws {Error} If the payload 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.retail.v2.SearchRequest.QueryExpansionSpec;

                        /**
                         * Verifies a QueryExpansionSpec message.
                         * @param message Plain 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 QueryExpansionSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns QueryExpansionSpec
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.SearchRequest.QueryExpansionSpec;

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

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

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

                    namespace QueryExpansionSpec {

                        /** Condition enum. */
                        enum Condition {
                            CONDITION_UNSPECIFIED = 0,
                            DISABLED = 1,
                            AUTO = 3
                        }
                    }

                    /** Properties of a PersonalizationSpec. */
                    interface IPersonalizationSpec {

                        /** PersonalizationSpec mode */
                        mode?: (google.cloud.retail.v2.SearchRequest.PersonalizationSpec.Mode|keyof typeof google.cloud.retail.v2.SearchRequest.PersonalizationSpec.Mode|null);
                    }

                    /** Represents a PersonalizationSpec. */
                    class PersonalizationSpec implements IPersonalizationSpec {

                        /**
                         * Constructs a new PersonalizationSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.SearchRequest.IPersonalizationSpec);

                        /** PersonalizationSpec mode. */
                        public mode: (google.cloud.retail.v2.SearchRequest.PersonalizationSpec.Mode|keyof typeof google.cloud.retail.v2.SearchRequest.PersonalizationSpec.Mode);

                        /**
                         * Creates a new PersonalizationSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PersonalizationSpec instance
                         */
                        public static create(properties?: google.cloud.retail.v2.SearchRequest.IPersonalizationSpec): google.cloud.retail.v2.SearchRequest.PersonalizationSpec;

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

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

                        /**
                         * Decodes a PersonalizationSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PersonalizationSpec
                         * @throws {Error} If the payload is not 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.retail.v2.SearchRequest.PersonalizationSpec;

                        /**
                         * Decodes a PersonalizationSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PersonalizationSpec
                         * @throws {Error} If the payload 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.retail.v2.SearchRequest.PersonalizationSpec;

                        /**
                         * Verifies a PersonalizationSpec message.
                         * @param message Plain 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 PersonalizationSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PersonalizationSpec
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.SearchRequest.PersonalizationSpec;

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

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

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

                    namespace PersonalizationSpec {

                        /** Mode enum. */
                        enum Mode {
                            MODE_UNSPECIFIED = 0,
                            AUTO = 1,
                            DISABLED = 2
                        }
                    }

                    /** Properties of a SpellCorrectionSpec. */
                    interface ISpellCorrectionSpec {

                        /** SpellCorrectionSpec mode */
                        mode?: (google.cloud.retail.v2.SearchRequest.SpellCorrectionSpec.Mode|keyof typeof google.cloud.retail.v2.SearchRequest.SpellCorrectionSpec.Mode|null);
                    }

                    /** Represents a SpellCorrectionSpec. */
                    class SpellCorrectionSpec implements ISpellCorrectionSpec {

                        /**
                         * Constructs a new SpellCorrectionSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.SearchRequest.ISpellCorrectionSpec);

                        /** SpellCorrectionSpec mode. */
                        public mode: (google.cloud.retail.v2.SearchRequest.SpellCorrectionSpec.Mode|keyof typeof google.cloud.retail.v2.SearchRequest.SpellCorrectionSpec.Mode);

                        /**
                         * Creates a new SpellCorrectionSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SpellCorrectionSpec instance
                         */
                        public static create(properties?: google.cloud.retail.v2.SearchRequest.ISpellCorrectionSpec): google.cloud.retail.v2.SearchRequest.SpellCorrectionSpec;

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

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

                        /**
                         * Decodes a SpellCorrectionSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SpellCorrectionSpec
                         * @throws {Error} If the payload is not 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.retail.v2.SearchRequest.SpellCorrectionSpec;

                        /**
                         * Decodes a SpellCorrectionSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SpellCorrectionSpec
                         * @throws {Error} If the payload 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.retail.v2.SearchRequest.SpellCorrectionSpec;

                        /**
                         * Verifies a SpellCorrectionSpec message.
                         * @param message Plain 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 SpellCorrectionSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SpellCorrectionSpec
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.SearchRequest.SpellCorrectionSpec;

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

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

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

                    namespace SpellCorrectionSpec {

                        /** Mode enum. */
                        enum Mode {
                            MODE_UNSPECIFIED = 0,
                            SUGGESTION_ONLY = 1,
                            AUTO = 2
                        }
                    }

                    /** Properties of a ConversationalSearchSpec. */
                    interface IConversationalSearchSpec {

                        /** ConversationalSearchSpec followupConversationRequested */
                        followupConversationRequested?: (boolean|null);

                        /** ConversationalSearchSpec conversationId */
                        conversationId?: (string|null);

                        /** ConversationalSearchSpec userAnswer */
                        userAnswer?: (google.cloud.retail.v2.SearchRequest.ConversationalSearchSpec.IUserAnswer|null);
                    }

                    /** Represents a ConversationalSearchSpec. */
                    class ConversationalSearchSpec implements IConversationalSearchSpec {

                        /**
                         * Constructs a new ConversationalSearchSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.SearchRequest.IConversationalSearchSpec);

                        /** ConversationalSearchSpec followupConversationRequested. */
                        public followupConversationRequested: boolean;

                        /** ConversationalSearchSpec conversationId. */
                        public conversationId: string;

                        /** ConversationalSearchSpec userAnswer. */
                        public userAnswer?: (google.cloud.retail.v2.SearchRequest.ConversationalSearchSpec.IUserAnswer|null);

                        /**
                         * Creates a new ConversationalSearchSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversationalSearchSpec instance
                         */
                        public static create(properties?: google.cloud.retail.v2.SearchRequest.IConversationalSearchSpec): google.cloud.retail.v2.SearchRequest.ConversationalSearchSpec;

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

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

                        /**
                         * Decodes a ConversationalSearchSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversationalSearchSpec
                         * @throws {Error} If the payload is not 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.retail.v2.SearchRequest.ConversationalSearchSpec;

                        /**
                         * Decodes a ConversationalSearchSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversationalSearchSpec
                         * @throws {Error} If the payload 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.retail.v2.SearchRequest.ConversationalSearchSpec;

                        /**
                         * Verifies a ConversationalSearchSpec message.
                         * @param message Plain 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 ConversationalSearchSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversationalSearchSpec
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.SearchRequest.ConversationalSearchSpec;

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

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

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

                    namespace ConversationalSearchSpec {

                        /** Properties of a UserAnswer. */
                        interface IUserAnswer {

                            /** UserAnswer textAnswer */
                            textAnswer?: (string|null);

                            /** UserAnswer selectedAnswer */
                            selectedAnswer?: (google.cloud.retail.v2.SearchRequest.ConversationalSearchSpec.UserAnswer.ISelectedAnswer|null);
                        }

                        /** Represents a UserAnswer. */
                        class UserAnswer implements IUserAnswer {

                            /**
                             * Constructs a new UserAnswer.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2.SearchRequest.ConversationalSearchSpec.IUserAnswer);

                            /** UserAnswer textAnswer. */
                            public textAnswer?: (string|null);

                            /** UserAnswer selectedAnswer. */
                            public selectedAnswer?: (google.cloud.retail.v2.SearchRequest.ConversationalSearchSpec.UserAnswer.ISelectedAnswer|null);

                            /** UserAnswer type. */
                            public type?: ("textAnswer"|"selectedAnswer");

                            /**
                             * Creates a new UserAnswer instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns UserAnswer instance
                             */
                            public static create(properties?: google.cloud.retail.v2.SearchRequest.ConversationalSearchSpec.IUserAnswer): google.cloud.retail.v2.SearchRequest.ConversationalSearchSpec.UserAnswer;

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

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

                            /**
                             * Decodes a UserAnswer message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns UserAnswer
                             * @throws {Error} If the payload is not 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.retail.v2.SearchRequest.ConversationalSearchSpec.UserAnswer;

                            /**
                             * Decodes a UserAnswer message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns UserAnswer
                             * @throws {Error} If the payload 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.retail.v2.SearchRequest.ConversationalSearchSpec.UserAnswer;

                            /**
                             * Verifies a UserAnswer message.
                             * @param message Plain 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 UserAnswer message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns UserAnswer
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.SearchRequest.ConversationalSearchSpec.UserAnswer;

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

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

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

                        namespace UserAnswer {

                            /** Properties of a SelectedAnswer. */
                            interface ISelectedAnswer {

                                /** SelectedAnswer productAttributeValues */
                                productAttributeValues?: (google.cloud.retail.v2.IProductAttributeValue[]|null);

                                /** SelectedAnswer productAttributeValue */
                                productAttributeValue?: (google.cloud.retail.v2.IProductAttributeValue|null);
                            }

                            /** Represents a SelectedAnswer. */
                            class SelectedAnswer implements ISelectedAnswer {

                                /**
                                 * Constructs a new SelectedAnswer.
                                 * @param [properties] Properties to set
                                 */
                                constructor(properties?: google.cloud.retail.v2.SearchRequest.ConversationalSearchSpec.UserAnswer.ISelectedAnswer);

                                /** SelectedAnswer productAttributeValues. */
                                public productAttributeValues: google.cloud.retail.v2.IProductAttributeValue[];

                                /** SelectedAnswer productAttributeValue. */
                                public productAttributeValue?: (google.cloud.retail.v2.IProductAttributeValue|null);

                                /**
                                 * Creates a new SelectedAnswer instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns SelectedAnswer instance
                                 */
                                public static create(properties?: google.cloud.retail.v2.SearchRequest.ConversationalSearchSpec.UserAnswer.ISelectedAnswer): google.cloud.retail.v2.SearchRequest.ConversationalSearchSpec.UserAnswer.SelectedAnswer;

                                /**
                                 * Encodes the specified SelectedAnswer message. Does not implicitly {@link google.cloud.retail.v2.SearchRequest.ConversationalSearchSpec.UserAnswer.SelectedAnswer.verify|verify} messages.
                                 * @param message SelectedAnswer message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(message: google.cloud.retail.v2.SearchRequest.ConversationalSearchSpec.UserAnswer.ISelectedAnswer, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified SelectedAnswer message, length delimited. Does not implicitly {@link google.cloud.retail.v2.SearchRequest.ConversationalSearchSpec.UserAnswer.SelectedAnswer.verify|verify} messages.
                                 * @param message SelectedAnswer message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encodeDelimited(message: google.cloud.retail.v2.SearchRequest.ConversationalSearchSpec.UserAnswer.ISelectedAnswer, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes a SelectedAnswer message from the specified reader or buffer.
                                 * @param reader Reader or buffer to decode from
                                 * @param [length] Message length if known beforehand
                                 * @returns SelectedAnswer
                                 * @throws {Error} If the payload is not 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.retail.v2.SearchRequest.ConversationalSearchSpec.UserAnswer.SelectedAnswer;

                                /**
                                 * Decodes a SelectedAnswer message from the specified reader or buffer, length delimited.
                                 * @param reader Reader or buffer to decode from
                                 * @returns SelectedAnswer
                                 * @throws {Error} If the payload 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.retail.v2.SearchRequest.ConversationalSearchSpec.UserAnswer.SelectedAnswer;

                                /**
                                 * Verifies a SelectedAnswer message.
                                 * @param message Plain 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 SelectedAnswer message from a plain object. Also converts values to their respective internal types.
                                 * @param object Plain object
                                 * @returns SelectedAnswer
                                 */
                                public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.SearchRequest.ConversationalSearchSpec.UserAnswer.SelectedAnswer;

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

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

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

                    /** Properties of a TileNavigationSpec. */
                    interface ITileNavigationSpec {

                        /** TileNavigationSpec tileNavigationRequested */
                        tileNavigationRequested?: (boolean|null);

                        /** TileNavigationSpec appliedTiles */
                        appliedTiles?: (google.cloud.retail.v2.ITile[]|null);
                    }

                    /** Represents a TileNavigationSpec. */
                    class TileNavigationSpec implements ITileNavigationSpec {

                        /**
                         * Constructs a new TileNavigationSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.SearchRequest.ITileNavigationSpec);

                        /** TileNavigationSpec tileNavigationRequested. */
                        public tileNavigationRequested: boolean;

                        /** TileNavigationSpec appliedTiles. */
                        public appliedTiles: google.cloud.retail.v2.ITile[];

                        /**
                         * Creates a new TileNavigationSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TileNavigationSpec instance
                         */
                        public static create(properties?: google.cloud.retail.v2.SearchRequest.ITileNavigationSpec): google.cloud.retail.v2.SearchRequest.TileNavigationSpec;

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

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

                        /**
                         * Decodes a TileNavigationSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TileNavigationSpec
                         * @throws {Error} If the payload is not 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.retail.v2.SearchRequest.TileNavigationSpec;

                        /**
                         * Decodes a TileNavigationSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TileNavigationSpec
                         * @throws {Error} If the payload 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.retail.v2.SearchRequest.TileNavigationSpec;

                        /**
                         * Verifies a TileNavigationSpec message.
                         * @param message Plain 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 TileNavigationSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TileNavigationSpec
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.SearchRequest.TileNavigationSpec;

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

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

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

                    /** SearchMode enum. */
                    enum SearchMode {
                        SEARCH_MODE_UNSPECIFIED = 0,
                        PRODUCT_SEARCH_ONLY = 1,
                        FACETED_SEARCH_ONLY = 2
                    }
                }

                /** Properties of a SearchResponse. */
                interface ISearchResponse {

                    /** SearchResponse results */
                    results?: (google.cloud.retail.v2.SearchResponse.ISearchResult[]|null);

                    /** SearchResponse facets */
                    facets?: (google.cloud.retail.v2.SearchResponse.IFacet[]|null);

                    /** SearchResponse totalSize */
                    totalSize?: (number|null);

                    /** SearchResponse correctedQuery */
                    correctedQuery?: (string|null);

                    /** SearchResponse attributionToken */
                    attributionToken?: (string|null);

                    /** SearchResponse nextPageToken */
                    nextPageToken?: (string|null);

                    /** SearchResponse queryExpansionInfo */
                    queryExpansionInfo?: (google.cloud.retail.v2.SearchResponse.IQueryExpansionInfo|null);

                    /** SearchResponse redirectUri */
                    redirectUri?: (string|null);

                    /** SearchResponse appliedControls */
                    appliedControls?: (string[]|null);

                    /** SearchResponse pinControlMetadata */
                    pinControlMetadata?: (google.cloud.retail.v2.IPinControlMetadata|null);

                    /** SearchResponse invalidConditionBoostSpecs */
                    invalidConditionBoostSpecs?: (google.cloud.retail.v2.SearchRequest.BoostSpec.IConditionBoostSpec[]|null);

                    /** SearchResponse experimentInfo */
                    experimentInfo?: (google.cloud.retail.v2.IExperimentInfo[]|null);

                    /** SearchResponse conversationalSearchResult */
                    conversationalSearchResult?: (google.cloud.retail.v2.SearchResponse.IConversationalSearchResult|null);

                    /** SearchResponse tileNavigationResult */
                    tileNavigationResult?: (google.cloud.retail.v2.SearchResponse.ITileNavigationResult|null);
                }

                /** Represents a SearchResponse. */
                class SearchResponse implements ISearchResponse {

                    /**
                     * Constructs a new SearchResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.ISearchResponse);

                    /** SearchResponse results. */
                    public results: google.cloud.retail.v2.SearchResponse.ISearchResult[];

                    /** SearchResponse facets. */
                    public facets: google.cloud.retail.v2.SearchResponse.IFacet[];

                    /** SearchResponse totalSize. */
                    public totalSize: number;

                    /** SearchResponse correctedQuery. */
                    public correctedQuery: string;

                    /** SearchResponse attributionToken. */
                    public attributionToken: string;

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

                    /** SearchResponse queryExpansionInfo. */
                    public queryExpansionInfo?: (google.cloud.retail.v2.SearchResponse.IQueryExpansionInfo|null);

                    /** SearchResponse redirectUri. */
                    public redirectUri: string;

                    /** SearchResponse appliedControls. */
                    public appliedControls: string[];

                    /** SearchResponse pinControlMetadata. */
                    public pinControlMetadata?: (google.cloud.retail.v2.IPinControlMetadata|null);

                    /** SearchResponse invalidConditionBoostSpecs. */
                    public invalidConditionBoostSpecs: google.cloud.retail.v2.SearchRequest.BoostSpec.IConditionBoostSpec[];

                    /** SearchResponse experimentInfo. */
                    public experimentInfo: google.cloud.retail.v2.IExperimentInfo[];

                    /** SearchResponse conversationalSearchResult. */
                    public conversationalSearchResult?: (google.cloud.retail.v2.SearchResponse.IConversationalSearchResult|null);

                    /** SearchResponse tileNavigationResult. */
                    public tileNavigationResult?: (google.cloud.retail.v2.SearchResponse.ITileNavigationResult|null);

                    /**
                     * Creates a new SearchResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SearchResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2.ISearchResponse): google.cloud.retail.v2.SearchResponse;

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

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

                    /**
                     * Decodes a SearchResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SearchResponse
                     * @throws {Error} If the payload is not 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.retail.v2.SearchResponse;

                    /**
                     * Decodes a SearchResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SearchResponse
                     * @throws {Error} If the payload 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.retail.v2.SearchResponse;

                    /**
                     * Verifies a SearchResponse message.
                     * @param message Plain 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 SearchResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SearchResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.SearchResponse;

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

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

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

                namespace SearchResponse {

                    /** Properties of a SearchResult. */
                    interface ISearchResult {

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

                        /** SearchResult product */
                        product?: (google.cloud.retail.v2.IProduct|null);

                        /** SearchResult matchingVariantCount */
                        matchingVariantCount?: (number|null);

                        /** SearchResult matchingVariantFields */
                        matchingVariantFields?: ({ [k: string]: google.protobuf.IFieldMask }|null);

                        /** SearchResult variantRollupValues */
                        variantRollupValues?: ({ [k: string]: google.protobuf.IValue }|null);

                        /** SearchResult personalLabels */
                        personalLabels?: (string[]|null);

                        /** SearchResult modelScores */
                        modelScores?: ({ [k: string]: google.cloud.retail.v2.IDoubleList }|null);
                    }

                    /** Represents a SearchResult. */
                    class SearchResult implements ISearchResult {

                        /**
                         * Constructs a new SearchResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.SearchResponse.ISearchResult);

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

                        /** SearchResult product. */
                        public product?: (google.cloud.retail.v2.IProduct|null);

                        /** SearchResult matchingVariantCount. */
                        public matchingVariantCount: number;

                        /** SearchResult matchingVariantFields. */
                        public matchingVariantFields: { [k: string]: google.protobuf.IFieldMask };

                        /** SearchResult variantRollupValues. */
                        public variantRollupValues: { [k: string]: google.protobuf.IValue };

                        /** SearchResult personalLabels. */
                        public personalLabels: string[];

                        /** SearchResult modelScores. */
                        public modelScores: { [k: string]: google.cloud.retail.v2.IDoubleList };

                        /**
                         * Creates a new SearchResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SearchResult instance
                         */
                        public static create(properties?: google.cloud.retail.v2.SearchResponse.ISearchResult): google.cloud.retail.v2.SearchResponse.SearchResult;

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

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

                        /**
                         * Decodes a SearchResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SearchResult
                         * @throws {Error} If the payload is not 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.retail.v2.SearchResponse.SearchResult;

                        /**
                         * Decodes a SearchResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SearchResult
                         * @throws {Error} If the payload 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.retail.v2.SearchResponse.SearchResult;

                        /**
                         * Verifies a SearchResult message.
                         * @param message Plain 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 SearchResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SearchResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.SearchResponse.SearchResult;

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

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

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

                    /** Properties of a Facet. */
                    interface IFacet {

                        /** Facet key */
                        key?: (string|null);

                        /** Facet values */
                        values?: (google.cloud.retail.v2.SearchResponse.Facet.IFacetValue[]|null);

                        /** Facet dynamicFacet */
                        dynamicFacet?: (boolean|null);
                    }

                    /** Represents a Facet. */
                    class Facet implements IFacet {

                        /**
                         * Constructs a new Facet.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.SearchResponse.IFacet);

                        /** Facet key. */
                        public key: string;

                        /** Facet values. */
                        public values: google.cloud.retail.v2.SearchResponse.Facet.IFacetValue[];

                        /** Facet dynamicFacet. */
                        public dynamicFacet: boolean;

                        /**
                         * Creates a new Facet instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Facet instance
                         */
                        public static create(properties?: google.cloud.retail.v2.SearchResponse.IFacet): google.cloud.retail.v2.SearchResponse.Facet;

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

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

                        /**
                         * Decodes a Facet message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Facet
                         * @throws {Error} If the payload is not 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.retail.v2.SearchResponse.Facet;

                        /**
                         * Decodes a Facet message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Facet
                         * @throws {Error} If the payload 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.retail.v2.SearchResponse.Facet;

                        /**
                         * Verifies a Facet message.
                         * @param message Plain 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 Facet message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Facet
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.SearchResponse.Facet;

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

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

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

                    namespace Facet {

                        /** Properties of a FacetValue. */
                        interface IFacetValue {

                            /** FacetValue value */
                            value?: (string|null);

                            /** FacetValue interval */
                            interval?: (google.cloud.retail.v2.IInterval|null);

                            /** FacetValue count */
                            count?: (number|Long|string|null);

                            /** FacetValue minValue */
                            minValue?: (number|null);

                            /** FacetValue maxValue */
                            maxValue?: (number|null);
                        }

                        /** Represents a FacetValue. */
                        class FacetValue implements IFacetValue {

                            /**
                             * Constructs a new FacetValue.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2.SearchResponse.Facet.IFacetValue);

                            /** FacetValue value. */
                            public value?: (string|null);

                            /** FacetValue interval. */
                            public interval?: (google.cloud.retail.v2.IInterval|null);

                            /** FacetValue count. */
                            public count: (number|Long|string);

                            /** FacetValue minValue. */
                            public minValue: number;

                            /** FacetValue maxValue. */
                            public maxValue: number;

                            /** FacetValue facetValue. */
                            public facetValue?: ("value"|"interval");

                            /**
                             * Creates a new FacetValue instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns FacetValue instance
                             */
                            public static create(properties?: google.cloud.retail.v2.SearchResponse.Facet.IFacetValue): google.cloud.retail.v2.SearchResponse.Facet.FacetValue;

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

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

                            /**
                             * Decodes a FacetValue message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns FacetValue
                             * @throws {Error} If the payload is not 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.retail.v2.SearchResponse.Facet.FacetValue;

                            /**
                             * Decodes a FacetValue message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns FacetValue
                             * @throws {Error} If the payload 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.retail.v2.SearchResponse.Facet.FacetValue;

                            /**
                             * Verifies a FacetValue message.
                             * @param message Plain 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 FacetValue message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns FacetValue
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.SearchResponse.Facet.FacetValue;

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

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

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

                    /** Properties of a QueryExpansionInfo. */
                    interface IQueryExpansionInfo {

                        /** QueryExpansionInfo expandedQuery */
                        expandedQuery?: (boolean|null);

                        /** QueryExpansionInfo pinnedResultCount */
                        pinnedResultCount?: (number|Long|string|null);
                    }

                    /** Represents a QueryExpansionInfo. */
                    class QueryExpansionInfo implements IQueryExpansionInfo {

                        /**
                         * Constructs a new QueryExpansionInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.SearchResponse.IQueryExpansionInfo);

                        /** QueryExpansionInfo expandedQuery. */
                        public expandedQuery: boolean;

                        /** QueryExpansionInfo pinnedResultCount. */
                        public pinnedResultCount: (number|Long|string);

                        /**
                         * Creates a new QueryExpansionInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns QueryExpansionInfo instance
                         */
                        public static create(properties?: google.cloud.retail.v2.SearchResponse.IQueryExpansionInfo): google.cloud.retail.v2.SearchResponse.QueryExpansionInfo;

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

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

                        /**
                         * Decodes a QueryExpansionInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns QueryExpansionInfo
                         * @throws {Error} If the payload is not 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.retail.v2.SearchResponse.QueryExpansionInfo;

                        /**
                         * Decodes a QueryExpansionInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns QueryExpansionInfo
                         * @throws {Error} If the payload 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.retail.v2.SearchResponse.QueryExpansionInfo;

                        /**
                         * Verifies a QueryExpansionInfo message.
                         * @param message Plain 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 QueryExpansionInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns QueryExpansionInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.SearchResponse.QueryExpansionInfo;

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

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

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

                    /** Properties of a ConversationalSearchResult. */
                    interface IConversationalSearchResult {

                        /** ConversationalSearchResult conversationId */
                        conversationId?: (string|null);

                        /** ConversationalSearchResult refinedQuery */
                        refinedQuery?: (string|null);

                        /** ConversationalSearchResult additionalFilters */
                        additionalFilters?: (google.cloud.retail.v2.SearchResponse.ConversationalSearchResult.IAdditionalFilter[]|null);

                        /** ConversationalSearchResult followupQuestion */
                        followupQuestion?: (string|null);

                        /** ConversationalSearchResult suggestedAnswers */
                        suggestedAnswers?: (google.cloud.retail.v2.SearchResponse.ConversationalSearchResult.ISuggestedAnswer[]|null);

                        /** ConversationalSearchResult additionalFilter */
                        additionalFilter?: (google.cloud.retail.v2.SearchResponse.ConversationalSearchResult.IAdditionalFilter|null);
                    }

                    /** Represents a ConversationalSearchResult. */
                    class ConversationalSearchResult implements IConversationalSearchResult {

                        /**
                         * Constructs a new ConversationalSearchResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.SearchResponse.IConversationalSearchResult);

                        /** ConversationalSearchResult conversationId. */
                        public conversationId: string;

                        /** ConversationalSearchResult refinedQuery. */
                        public refinedQuery: string;

                        /** ConversationalSearchResult additionalFilters. */
                        public additionalFilters: google.cloud.retail.v2.SearchResponse.ConversationalSearchResult.IAdditionalFilter[];

                        /** ConversationalSearchResult followupQuestion. */
                        public followupQuestion: string;

                        /** ConversationalSearchResult suggestedAnswers. */
                        public suggestedAnswers: google.cloud.retail.v2.SearchResponse.ConversationalSearchResult.ISuggestedAnswer[];

                        /** ConversationalSearchResult additionalFilter. */
                        public additionalFilter?: (google.cloud.retail.v2.SearchResponse.ConversationalSearchResult.IAdditionalFilter|null);

                        /**
                         * Creates a new ConversationalSearchResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversationalSearchResult instance
                         */
                        public static create(properties?: google.cloud.retail.v2.SearchResponse.IConversationalSearchResult): google.cloud.retail.v2.SearchResponse.ConversationalSearchResult;

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

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

                        /**
                         * Decodes a ConversationalSearchResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversationalSearchResult
                         * @throws {Error} If the payload is not 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.retail.v2.SearchResponse.ConversationalSearchResult;

                        /**
                         * Decodes a ConversationalSearchResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversationalSearchResult
                         * @throws {Error} If the payload 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.retail.v2.SearchResponse.ConversationalSearchResult;

                        /**
                         * Verifies a ConversationalSearchResult message.
                         * @param message Plain 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 ConversationalSearchResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversationalSearchResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.SearchResponse.ConversationalSearchResult;

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

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

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

                    namespace ConversationalSearchResult {

                        /** Properties of a SuggestedAnswer. */
                        interface ISuggestedAnswer {

                            /** SuggestedAnswer productAttributeValue */
                            productAttributeValue?: (google.cloud.retail.v2.IProductAttributeValue|null);
                        }

                        /** Represents a SuggestedAnswer. */
                        class SuggestedAnswer implements ISuggestedAnswer {

                            /**
                             * Constructs a new SuggestedAnswer.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2.SearchResponse.ConversationalSearchResult.ISuggestedAnswer);

                            /** SuggestedAnswer productAttributeValue. */
                            public productAttributeValue?: (google.cloud.retail.v2.IProductAttributeValue|null);

                            /**
                             * Creates a new SuggestedAnswer instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns SuggestedAnswer instance
                             */
                            public static create(properties?: google.cloud.retail.v2.SearchResponse.ConversationalSearchResult.ISuggestedAnswer): google.cloud.retail.v2.SearchResponse.ConversationalSearchResult.SuggestedAnswer;

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

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

                            /**
                             * Decodes a SuggestedAnswer message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns SuggestedAnswer
                             * @throws {Error} If the payload is not 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.retail.v2.SearchResponse.ConversationalSearchResult.SuggestedAnswer;

                            /**
                             * Decodes a SuggestedAnswer message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns SuggestedAnswer
                             * @throws {Error} If the payload 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.retail.v2.SearchResponse.ConversationalSearchResult.SuggestedAnswer;

                            /**
                             * Verifies a SuggestedAnswer message.
                             * @param message Plain 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 SuggestedAnswer message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns SuggestedAnswer
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.SearchResponse.ConversationalSearchResult.SuggestedAnswer;

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

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

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

                        /** Properties of an AdditionalFilter. */
                        interface IAdditionalFilter {

                            /** AdditionalFilter productAttributeValue */
                            productAttributeValue?: (google.cloud.retail.v2.IProductAttributeValue|null);
                        }

                        /** Represents an AdditionalFilter. */
                        class AdditionalFilter implements IAdditionalFilter {

                            /**
                             * Constructs a new AdditionalFilter.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2.SearchResponse.ConversationalSearchResult.IAdditionalFilter);

                            /** AdditionalFilter productAttributeValue. */
                            public productAttributeValue?: (google.cloud.retail.v2.IProductAttributeValue|null);

                            /**
                             * Creates a new AdditionalFilter instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns AdditionalFilter instance
                             */
                            public static create(properties?: google.cloud.retail.v2.SearchResponse.ConversationalSearchResult.IAdditionalFilter): google.cloud.retail.v2.SearchResponse.ConversationalSearchResult.AdditionalFilter;

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

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

                            /**
                             * Decodes an AdditionalFilter message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns AdditionalFilter
                             * @throws {Error} If the payload is not 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.retail.v2.SearchResponse.ConversationalSearchResult.AdditionalFilter;

                            /**
                             * Decodes an AdditionalFilter message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns AdditionalFilter
                             * @throws {Error} If the payload 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.retail.v2.SearchResponse.ConversationalSearchResult.AdditionalFilter;

                            /**
                             * Verifies an AdditionalFilter message.
                             * @param message Plain 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 AdditionalFilter message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns AdditionalFilter
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.SearchResponse.ConversationalSearchResult.AdditionalFilter;

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

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

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

                    /** Properties of a TileNavigationResult. */
                    interface ITileNavigationResult {

                        /** TileNavigationResult tiles */
                        tiles?: (google.cloud.retail.v2.ITile[]|null);
                    }

                    /** Represents a TileNavigationResult. */
                    class TileNavigationResult implements ITileNavigationResult {

                        /**
                         * Constructs a new TileNavigationResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.SearchResponse.ITileNavigationResult);

                        /** TileNavigationResult tiles. */
                        public tiles: google.cloud.retail.v2.ITile[];

                        /**
                         * Creates a new TileNavigationResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TileNavigationResult instance
                         */
                        public static create(properties?: google.cloud.retail.v2.SearchResponse.ITileNavigationResult): google.cloud.retail.v2.SearchResponse.TileNavigationResult;

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

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

                        /**
                         * Decodes a TileNavigationResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TileNavigationResult
                         * @throws {Error} If the payload is not 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.retail.v2.SearchResponse.TileNavigationResult;

                        /**
                         * Decodes a TileNavigationResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TileNavigationResult
                         * @throws {Error} If the payload 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.retail.v2.SearchResponse.TileNavigationResult;

                        /**
                         * Verifies a TileNavigationResult message.
                         * @param message Plain 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 TileNavigationResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TileNavigationResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.SearchResponse.TileNavigationResult;

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

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

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

                /** Properties of an ExperimentInfo. */
                interface IExperimentInfo {

                    /** ExperimentInfo servingConfigExperiment */
                    servingConfigExperiment?: (google.cloud.retail.v2.ExperimentInfo.IServingConfigExperiment|null);

                    /** ExperimentInfo experiment */
                    experiment?: (string|null);
                }

                /** Represents an ExperimentInfo. */
                class ExperimentInfo implements IExperimentInfo {

                    /**
                     * Constructs a new ExperimentInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IExperimentInfo);

                    /** ExperimentInfo servingConfigExperiment. */
                    public servingConfigExperiment?: (google.cloud.retail.v2.ExperimentInfo.IServingConfigExperiment|null);

                    /** ExperimentInfo experiment. */
                    public experiment: string;

                    /** ExperimentInfo experimentMetadata. */
                    public experimentMetadata?: "servingConfigExperiment";

                    /**
                     * Creates a new ExperimentInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ExperimentInfo instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IExperimentInfo): google.cloud.retail.v2.ExperimentInfo;

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

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

                    /**
                     * Decodes an ExperimentInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ExperimentInfo
                     * @throws {Error} If the payload is not 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.retail.v2.ExperimentInfo;

                    /**
                     * Decodes an ExperimentInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ExperimentInfo
                     * @throws {Error} If the payload 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.retail.v2.ExperimentInfo;

                    /**
                     * Verifies an ExperimentInfo message.
                     * @param message Plain 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 ExperimentInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ExperimentInfo
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ExperimentInfo;

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

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

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

                namespace ExperimentInfo {

                    /** Properties of a ServingConfigExperiment. */
                    interface IServingConfigExperiment {

                        /** ServingConfigExperiment originalServingConfig */
                        originalServingConfig?: (string|null);

                        /** ServingConfigExperiment experimentServingConfig */
                        experimentServingConfig?: (string|null);
                    }

                    /** Represents a ServingConfigExperiment. */
                    class ServingConfigExperiment implements IServingConfigExperiment {

                        /**
                         * Constructs a new ServingConfigExperiment.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.ExperimentInfo.IServingConfigExperiment);

                        /** ServingConfigExperiment originalServingConfig. */
                        public originalServingConfig: string;

                        /** ServingConfigExperiment experimentServingConfig. */
                        public experimentServingConfig: string;

                        /**
                         * Creates a new ServingConfigExperiment instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ServingConfigExperiment instance
                         */
                        public static create(properties?: google.cloud.retail.v2.ExperimentInfo.IServingConfigExperiment): google.cloud.retail.v2.ExperimentInfo.ServingConfigExperiment;

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

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

                        /**
                         * Decodes a ServingConfigExperiment message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ServingConfigExperiment
                         * @throws {Error} If the payload is not 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.retail.v2.ExperimentInfo.ServingConfigExperiment;

                        /**
                         * Decodes a ServingConfigExperiment message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ServingConfigExperiment
                         * @throws {Error} If the payload 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.retail.v2.ExperimentInfo.ServingConfigExperiment;

                        /**
                         * Verifies a ServingConfigExperiment message.
                         * @param message Plain 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 ServingConfigExperiment message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ServingConfigExperiment
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ExperimentInfo.ServingConfigExperiment;

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

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

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

                /** Properties of a GenerativeQuestionsFeatureConfig. */
                interface IGenerativeQuestionsFeatureConfig {

                    /** GenerativeQuestionsFeatureConfig catalog */
                    catalog?: (string|null);

                    /** GenerativeQuestionsFeatureConfig featureEnabled */
                    featureEnabled?: (boolean|null);

                    /** GenerativeQuestionsFeatureConfig minimumProducts */
                    minimumProducts?: (number|null);
                }

                /** Represents a GenerativeQuestionsFeatureConfig. */
                class GenerativeQuestionsFeatureConfig implements IGenerativeQuestionsFeatureConfig {

                    /**
                     * Constructs a new GenerativeQuestionsFeatureConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IGenerativeQuestionsFeatureConfig);

                    /** GenerativeQuestionsFeatureConfig catalog. */
                    public catalog: string;

                    /** GenerativeQuestionsFeatureConfig featureEnabled. */
                    public featureEnabled: boolean;

                    /** GenerativeQuestionsFeatureConfig minimumProducts. */
                    public minimumProducts: number;

                    /**
                     * Creates a new GenerativeQuestionsFeatureConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GenerativeQuestionsFeatureConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IGenerativeQuestionsFeatureConfig): google.cloud.retail.v2.GenerativeQuestionsFeatureConfig;

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

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

                    /**
                     * Decodes a GenerativeQuestionsFeatureConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GenerativeQuestionsFeatureConfig
                     * @throws {Error} If the payload is not 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.retail.v2.GenerativeQuestionsFeatureConfig;

                    /**
                     * Decodes a GenerativeQuestionsFeatureConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GenerativeQuestionsFeatureConfig
                     * @throws {Error} If the payload 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.retail.v2.GenerativeQuestionsFeatureConfig;

                    /**
                     * Verifies a GenerativeQuestionsFeatureConfig message.
                     * @param message Plain 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 GenerativeQuestionsFeatureConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GenerativeQuestionsFeatureConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.GenerativeQuestionsFeatureConfig;

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

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

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

                /** Properties of a GenerativeQuestionConfig. */
                interface IGenerativeQuestionConfig {

                    /** GenerativeQuestionConfig catalog */
                    catalog?: (string|null);

                    /** GenerativeQuestionConfig facet */
                    facet?: (string|null);

                    /** GenerativeQuestionConfig generatedQuestion */
                    generatedQuestion?: (string|null);

                    /** GenerativeQuestionConfig finalQuestion */
                    finalQuestion?: (string|null);

                    /** GenerativeQuestionConfig exampleValues */
                    exampleValues?: (string[]|null);

                    /** GenerativeQuestionConfig frequency */
                    frequency?: (number|null);

                    /** GenerativeQuestionConfig allowedInConversation */
                    allowedInConversation?: (boolean|null);
                }

                /** Represents a GenerativeQuestionConfig. */
                class GenerativeQuestionConfig implements IGenerativeQuestionConfig {

                    /**
                     * Constructs a new GenerativeQuestionConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IGenerativeQuestionConfig);

                    /** GenerativeQuestionConfig catalog. */
                    public catalog: string;

                    /** GenerativeQuestionConfig facet. */
                    public facet: string;

                    /** GenerativeQuestionConfig generatedQuestion. */
                    public generatedQuestion: string;

                    /** GenerativeQuestionConfig finalQuestion. */
                    public finalQuestion: string;

                    /** GenerativeQuestionConfig exampleValues. */
                    public exampleValues: string[];

                    /** GenerativeQuestionConfig frequency. */
                    public frequency: number;

                    /** GenerativeQuestionConfig allowedInConversation. */
                    public allowedInConversation: boolean;

                    /**
                     * Creates a new GenerativeQuestionConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GenerativeQuestionConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IGenerativeQuestionConfig): google.cloud.retail.v2.GenerativeQuestionConfig;

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

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

                    /**
                     * Decodes a GenerativeQuestionConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GenerativeQuestionConfig
                     * @throws {Error} If the payload is not 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.retail.v2.GenerativeQuestionConfig;

                    /**
                     * Decodes a GenerativeQuestionConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GenerativeQuestionConfig
                     * @throws {Error} If the payload 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.retail.v2.GenerativeQuestionConfig;

                    /**
                     * Verifies a GenerativeQuestionConfig message.
                     * @param message Plain 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 GenerativeQuestionConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GenerativeQuestionConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.GenerativeQuestionConfig;

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

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

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

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

                    /**
                     * Constructs a new GenerativeQuestionService 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 GenerativeQuestionService 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): GenerativeQuestionService;

                    /**
                     * Calls UpdateGenerativeQuestionsFeatureConfig.
                     * @param request UpdateGenerativeQuestionsFeatureConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and GenerativeQuestionsFeatureConfig
                     */
                    public updateGenerativeQuestionsFeatureConfig(request: google.cloud.retail.v2.IUpdateGenerativeQuestionsFeatureConfigRequest, callback: google.cloud.retail.v2.GenerativeQuestionService.UpdateGenerativeQuestionsFeatureConfigCallback): void;

                    /**
                     * Calls UpdateGenerativeQuestionsFeatureConfig.
                     * @param request UpdateGenerativeQuestionsFeatureConfigRequest message or plain object
                     * @returns Promise
                     */
                    public updateGenerativeQuestionsFeatureConfig(request: google.cloud.retail.v2.IUpdateGenerativeQuestionsFeatureConfigRequest): Promise<google.cloud.retail.v2.GenerativeQuestionsFeatureConfig>;

                    /**
                     * Calls GetGenerativeQuestionsFeatureConfig.
                     * @param request GetGenerativeQuestionsFeatureConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and GenerativeQuestionsFeatureConfig
                     */
                    public getGenerativeQuestionsFeatureConfig(request: google.cloud.retail.v2.IGetGenerativeQuestionsFeatureConfigRequest, callback: google.cloud.retail.v2.GenerativeQuestionService.GetGenerativeQuestionsFeatureConfigCallback): void;

                    /**
                     * Calls GetGenerativeQuestionsFeatureConfig.
                     * @param request GetGenerativeQuestionsFeatureConfigRequest message or plain object
                     * @returns Promise
                     */
                    public getGenerativeQuestionsFeatureConfig(request: google.cloud.retail.v2.IGetGenerativeQuestionsFeatureConfigRequest): Promise<google.cloud.retail.v2.GenerativeQuestionsFeatureConfig>;

                    /**
                     * Calls ListGenerativeQuestionConfigs.
                     * @param request ListGenerativeQuestionConfigsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListGenerativeQuestionConfigsResponse
                     */
                    public listGenerativeQuestionConfigs(request: google.cloud.retail.v2.IListGenerativeQuestionConfigsRequest, callback: google.cloud.retail.v2.GenerativeQuestionService.ListGenerativeQuestionConfigsCallback): void;

                    /**
                     * Calls ListGenerativeQuestionConfigs.
                     * @param request ListGenerativeQuestionConfigsRequest message or plain object
                     * @returns Promise
                     */
                    public listGenerativeQuestionConfigs(request: google.cloud.retail.v2.IListGenerativeQuestionConfigsRequest): Promise<google.cloud.retail.v2.ListGenerativeQuestionConfigsResponse>;

                    /**
                     * Calls UpdateGenerativeQuestionConfig.
                     * @param request UpdateGenerativeQuestionConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and GenerativeQuestionConfig
                     */
                    public updateGenerativeQuestionConfig(request: google.cloud.retail.v2.IUpdateGenerativeQuestionConfigRequest, callback: google.cloud.retail.v2.GenerativeQuestionService.UpdateGenerativeQuestionConfigCallback): void;

                    /**
                     * Calls UpdateGenerativeQuestionConfig.
                     * @param request UpdateGenerativeQuestionConfigRequest message or plain object
                     * @returns Promise
                     */
                    public updateGenerativeQuestionConfig(request: google.cloud.retail.v2.IUpdateGenerativeQuestionConfigRequest): Promise<google.cloud.retail.v2.GenerativeQuestionConfig>;

                    /**
                     * Calls BatchUpdateGenerativeQuestionConfigs.
                     * @param request BatchUpdateGenerativeQuestionConfigsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and BatchUpdateGenerativeQuestionConfigsResponse
                     */
                    public batchUpdateGenerativeQuestionConfigs(request: google.cloud.retail.v2.IBatchUpdateGenerativeQuestionConfigsRequest, callback: google.cloud.retail.v2.GenerativeQuestionService.BatchUpdateGenerativeQuestionConfigsCallback): void;

                    /**
                     * Calls BatchUpdateGenerativeQuestionConfigs.
                     * @param request BatchUpdateGenerativeQuestionConfigsRequest message or plain object
                     * @returns Promise
                     */
                    public batchUpdateGenerativeQuestionConfigs(request: google.cloud.retail.v2.IBatchUpdateGenerativeQuestionConfigsRequest): Promise<google.cloud.retail.v2.BatchUpdateGenerativeQuestionConfigsResponse>;
                }

                namespace GenerativeQuestionService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.GenerativeQuestionService|updateGenerativeQuestionsFeatureConfig}.
                     * @param error Error, if any
                     * @param [response] GenerativeQuestionsFeatureConfig
                     */
                    type UpdateGenerativeQuestionsFeatureConfigCallback = (error: (Error|null), response?: google.cloud.retail.v2.GenerativeQuestionsFeatureConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.GenerativeQuestionService|getGenerativeQuestionsFeatureConfig}.
                     * @param error Error, if any
                     * @param [response] GenerativeQuestionsFeatureConfig
                     */
                    type GetGenerativeQuestionsFeatureConfigCallback = (error: (Error|null), response?: google.cloud.retail.v2.GenerativeQuestionsFeatureConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.GenerativeQuestionService|listGenerativeQuestionConfigs}.
                     * @param error Error, if any
                     * @param [response] ListGenerativeQuestionConfigsResponse
                     */
                    type ListGenerativeQuestionConfigsCallback = (error: (Error|null), response?: google.cloud.retail.v2.ListGenerativeQuestionConfigsResponse) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.GenerativeQuestionService|updateGenerativeQuestionConfig}.
                     * @param error Error, if any
                     * @param [response] GenerativeQuestionConfig
                     */
                    type UpdateGenerativeQuestionConfigCallback = (error: (Error|null), response?: google.cloud.retail.v2.GenerativeQuestionConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.GenerativeQuestionService|batchUpdateGenerativeQuestionConfigs}.
                     * @param error Error, if any
                     * @param [response] BatchUpdateGenerativeQuestionConfigsResponse
                     */
                    type BatchUpdateGenerativeQuestionConfigsCallback = (error: (Error|null), response?: google.cloud.retail.v2.BatchUpdateGenerativeQuestionConfigsResponse) => void;
                }

                /** Properties of an UpdateGenerativeQuestionsFeatureConfigRequest. */
                interface IUpdateGenerativeQuestionsFeatureConfigRequest {

                    /** UpdateGenerativeQuestionsFeatureConfigRequest generativeQuestionsFeatureConfig */
                    generativeQuestionsFeatureConfig?: (google.cloud.retail.v2.IGenerativeQuestionsFeatureConfig|null);

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

                /** Represents an UpdateGenerativeQuestionsFeatureConfigRequest. */
                class UpdateGenerativeQuestionsFeatureConfigRequest implements IUpdateGenerativeQuestionsFeatureConfigRequest {

                    /**
                     * Constructs a new UpdateGenerativeQuestionsFeatureConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IUpdateGenerativeQuestionsFeatureConfigRequest);

                    /** UpdateGenerativeQuestionsFeatureConfigRequest generativeQuestionsFeatureConfig. */
                    public generativeQuestionsFeatureConfig?: (google.cloud.retail.v2.IGenerativeQuestionsFeatureConfig|null);

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

                    /**
                     * Creates a new UpdateGenerativeQuestionsFeatureConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateGenerativeQuestionsFeatureConfigRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IUpdateGenerativeQuestionsFeatureConfigRequest): google.cloud.retail.v2.UpdateGenerativeQuestionsFeatureConfigRequest;

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

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

                    /**
                     * Decodes an UpdateGenerativeQuestionsFeatureConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateGenerativeQuestionsFeatureConfigRequest
                     * @throws {Error} If the payload is not 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.retail.v2.UpdateGenerativeQuestionsFeatureConfigRequest;

                    /**
                     * Decodes an UpdateGenerativeQuestionsFeatureConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateGenerativeQuestionsFeatureConfigRequest
                     * @throws {Error} If the payload 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.retail.v2.UpdateGenerativeQuestionsFeatureConfigRequest;

                    /**
                     * Verifies an UpdateGenerativeQuestionsFeatureConfigRequest message.
                     * @param message Plain 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 UpdateGenerativeQuestionsFeatureConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateGenerativeQuestionsFeatureConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.UpdateGenerativeQuestionsFeatureConfigRequest;

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

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

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

                /** Properties of a GetGenerativeQuestionsFeatureConfigRequest. */
                interface IGetGenerativeQuestionsFeatureConfigRequest {

                    /** GetGenerativeQuestionsFeatureConfigRequest catalog */
                    catalog?: (string|null);
                }

                /** Represents a GetGenerativeQuestionsFeatureConfigRequest. */
                class GetGenerativeQuestionsFeatureConfigRequest implements IGetGenerativeQuestionsFeatureConfigRequest {

                    /**
                     * Constructs a new GetGenerativeQuestionsFeatureConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IGetGenerativeQuestionsFeatureConfigRequest);

                    /** GetGenerativeQuestionsFeatureConfigRequest catalog. */
                    public catalog: string;

                    /**
                     * Creates a new GetGenerativeQuestionsFeatureConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetGenerativeQuestionsFeatureConfigRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IGetGenerativeQuestionsFeatureConfigRequest): google.cloud.retail.v2.GetGenerativeQuestionsFeatureConfigRequest;

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

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

                    /**
                     * Decodes a GetGenerativeQuestionsFeatureConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetGenerativeQuestionsFeatureConfigRequest
                     * @throws {Error} If the payload is not 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.retail.v2.GetGenerativeQuestionsFeatureConfigRequest;

                    /**
                     * Decodes a GetGenerativeQuestionsFeatureConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetGenerativeQuestionsFeatureConfigRequest
                     * @throws {Error} If the payload 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.retail.v2.GetGenerativeQuestionsFeatureConfigRequest;

                    /**
                     * Verifies a GetGenerativeQuestionsFeatureConfigRequest message.
                     * @param message Plain 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 GetGenerativeQuestionsFeatureConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetGenerativeQuestionsFeatureConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.GetGenerativeQuestionsFeatureConfigRequest;

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

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

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

                /** Properties of a ListGenerativeQuestionConfigsRequest. */
                interface IListGenerativeQuestionConfigsRequest {

                    /** ListGenerativeQuestionConfigsRequest parent */
                    parent?: (string|null);
                }

                /** Represents a ListGenerativeQuestionConfigsRequest. */
                class ListGenerativeQuestionConfigsRequest implements IListGenerativeQuestionConfigsRequest {

                    /**
                     * Constructs a new ListGenerativeQuestionConfigsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IListGenerativeQuestionConfigsRequest);

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

                    /**
                     * Creates a new ListGenerativeQuestionConfigsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListGenerativeQuestionConfigsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IListGenerativeQuestionConfigsRequest): google.cloud.retail.v2.ListGenerativeQuestionConfigsRequest;

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

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

                    /**
                     * Decodes a ListGenerativeQuestionConfigsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListGenerativeQuestionConfigsRequest
                     * @throws {Error} If the payload is not 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.retail.v2.ListGenerativeQuestionConfigsRequest;

                    /**
                     * Decodes a ListGenerativeQuestionConfigsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListGenerativeQuestionConfigsRequest
                     * @throws {Error} If the payload 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.retail.v2.ListGenerativeQuestionConfigsRequest;

                    /**
                     * Verifies a ListGenerativeQuestionConfigsRequest message.
                     * @param message Plain 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 ListGenerativeQuestionConfigsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListGenerativeQuestionConfigsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ListGenerativeQuestionConfigsRequest;

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

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

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

                /** Properties of a ListGenerativeQuestionConfigsResponse. */
                interface IListGenerativeQuestionConfigsResponse {

                    /** ListGenerativeQuestionConfigsResponse generativeQuestionConfigs */
                    generativeQuestionConfigs?: (google.cloud.retail.v2.IGenerativeQuestionConfig[]|null);
                }

                /** Represents a ListGenerativeQuestionConfigsResponse. */
                class ListGenerativeQuestionConfigsResponse implements IListGenerativeQuestionConfigsResponse {

                    /**
                     * Constructs a new ListGenerativeQuestionConfigsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IListGenerativeQuestionConfigsResponse);

                    /** ListGenerativeQuestionConfigsResponse generativeQuestionConfigs. */
                    public generativeQuestionConfigs: google.cloud.retail.v2.IGenerativeQuestionConfig[];

                    /**
                     * Creates a new ListGenerativeQuestionConfigsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListGenerativeQuestionConfigsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IListGenerativeQuestionConfigsResponse): google.cloud.retail.v2.ListGenerativeQuestionConfigsResponse;

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

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

                    /**
                     * Decodes a ListGenerativeQuestionConfigsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListGenerativeQuestionConfigsResponse
                     * @throws {Error} If the payload is not 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.retail.v2.ListGenerativeQuestionConfigsResponse;

                    /**
                     * Decodes a ListGenerativeQuestionConfigsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListGenerativeQuestionConfigsResponse
                     * @throws {Error} If the payload 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.retail.v2.ListGenerativeQuestionConfigsResponse;

                    /**
                     * Verifies a ListGenerativeQuestionConfigsResponse message.
                     * @param message Plain 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 ListGenerativeQuestionConfigsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListGenerativeQuestionConfigsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ListGenerativeQuestionConfigsResponse;

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

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

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

                /** Properties of an UpdateGenerativeQuestionConfigRequest. */
                interface IUpdateGenerativeQuestionConfigRequest {

                    /** UpdateGenerativeQuestionConfigRequest generativeQuestionConfig */
                    generativeQuestionConfig?: (google.cloud.retail.v2.IGenerativeQuestionConfig|null);

                    /** UpdateGenerativeQuestionConfigRequest updateMask */
                    updateMask?: (google.protobuf.IFieldMask|null);
                }

                /** Represents an UpdateGenerativeQuestionConfigRequest. */
                class UpdateGenerativeQuestionConfigRequest implements IUpdateGenerativeQuestionConfigRequest {

                    /**
                     * Constructs a new UpdateGenerativeQuestionConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IUpdateGenerativeQuestionConfigRequest);

                    /** UpdateGenerativeQuestionConfigRequest generativeQuestionConfig. */
                    public generativeQuestionConfig?: (google.cloud.retail.v2.IGenerativeQuestionConfig|null);

                    /** UpdateGenerativeQuestionConfigRequest updateMask. */
                    public updateMask?: (google.protobuf.IFieldMask|null);

                    /**
                     * Creates a new UpdateGenerativeQuestionConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateGenerativeQuestionConfigRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IUpdateGenerativeQuestionConfigRequest): google.cloud.retail.v2.UpdateGenerativeQuestionConfigRequest;

                    /**
                     * Encodes the specified UpdateGenerativeQuestionConfigRequest message. Does not implicitly {@link google.cloud.retail.v2.UpdateGenerativeQuestionConfigRequest.verify|verify} messages.
                     * @param message UpdateGenerativeQuestionConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IUpdateGenerativeQuestionConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateGenerativeQuestionConfigRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2.UpdateGenerativeQuestionConfigRequest.verify|verify} messages.
                     * @param message UpdateGenerativeQuestionConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IUpdateGenerativeQuestionConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateGenerativeQuestionConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateGenerativeQuestionConfigRequest
                     * @throws {Error} If the payload is not 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.retail.v2.UpdateGenerativeQuestionConfigRequest;

                    /**
                     * Decodes an UpdateGenerativeQuestionConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateGenerativeQuestionConfigRequest
                     * @throws {Error} If the payload 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.retail.v2.UpdateGenerativeQuestionConfigRequest;

                    /**
                     * Verifies an UpdateGenerativeQuestionConfigRequest message.
                     * @param message Plain 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 UpdateGenerativeQuestionConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateGenerativeQuestionConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.UpdateGenerativeQuestionConfigRequest;

                    /**
                     * Creates a plain object from an UpdateGenerativeQuestionConfigRequest message. Also converts values to other types if specified.
                     * @param message UpdateGenerativeQuestionConfigRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.UpdateGenerativeQuestionConfigRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateGenerativeQuestionConfigRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateGenerativeQuestionConfigRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a BatchUpdateGenerativeQuestionConfigsRequest. */
                interface IBatchUpdateGenerativeQuestionConfigsRequest {

                    /** BatchUpdateGenerativeQuestionConfigsRequest parent */
                    parent?: (string|null);

                    /** BatchUpdateGenerativeQuestionConfigsRequest requests */
                    requests?: (google.cloud.retail.v2.IUpdateGenerativeQuestionConfigRequest[]|null);
                }

                /** Represents a BatchUpdateGenerativeQuestionConfigsRequest. */
                class BatchUpdateGenerativeQuestionConfigsRequest implements IBatchUpdateGenerativeQuestionConfigsRequest {

                    /**
                     * Constructs a new BatchUpdateGenerativeQuestionConfigsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IBatchUpdateGenerativeQuestionConfigsRequest);

                    /** BatchUpdateGenerativeQuestionConfigsRequest parent. */
                    public parent: string;

                    /** BatchUpdateGenerativeQuestionConfigsRequest requests. */
                    public requests: google.cloud.retail.v2.IUpdateGenerativeQuestionConfigRequest[];

                    /**
                     * Creates a new BatchUpdateGenerativeQuestionConfigsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns BatchUpdateGenerativeQuestionConfigsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IBatchUpdateGenerativeQuestionConfigsRequest): google.cloud.retail.v2.BatchUpdateGenerativeQuestionConfigsRequest;

                    /**
                     * Encodes the specified BatchUpdateGenerativeQuestionConfigsRequest message. Does not implicitly {@link google.cloud.retail.v2.BatchUpdateGenerativeQuestionConfigsRequest.verify|verify} messages.
                     * @param message BatchUpdateGenerativeQuestionConfigsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IBatchUpdateGenerativeQuestionConfigsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified BatchUpdateGenerativeQuestionConfigsRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2.BatchUpdateGenerativeQuestionConfigsRequest.verify|verify} messages.
                     * @param message BatchUpdateGenerativeQuestionConfigsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IBatchUpdateGenerativeQuestionConfigsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a BatchUpdateGenerativeQuestionConfigsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns BatchUpdateGenerativeQuestionConfigsRequest
                     * @throws {Error} If the payload is not 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.retail.v2.BatchUpdateGenerativeQuestionConfigsRequest;

                    /**
                     * Decodes a BatchUpdateGenerativeQuestionConfigsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns BatchUpdateGenerativeQuestionConfigsRequest
                     * @throws {Error} If the payload 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.retail.v2.BatchUpdateGenerativeQuestionConfigsRequest;

                    /**
                     * Verifies a BatchUpdateGenerativeQuestionConfigsRequest message.
                     * @param message Plain 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 BatchUpdateGenerativeQuestionConfigsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns BatchUpdateGenerativeQuestionConfigsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.BatchUpdateGenerativeQuestionConfigsRequest;

                    /**
                     * Creates a plain object from a BatchUpdateGenerativeQuestionConfigsRequest message. Also converts values to other types if specified.
                     * @param message BatchUpdateGenerativeQuestionConfigsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.BatchUpdateGenerativeQuestionConfigsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this BatchUpdateGenerativeQuestionConfigsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for BatchUpdateGenerativeQuestionConfigsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a BatchUpdateGenerativeQuestionConfigsResponse. */
                interface IBatchUpdateGenerativeQuestionConfigsResponse {

                    /** BatchUpdateGenerativeQuestionConfigsResponse generativeQuestionConfigs */
                    generativeQuestionConfigs?: (google.cloud.retail.v2.IGenerativeQuestionConfig[]|null);
                }

                /** Represents a BatchUpdateGenerativeQuestionConfigsResponse. */
                class BatchUpdateGenerativeQuestionConfigsResponse implements IBatchUpdateGenerativeQuestionConfigsResponse {

                    /**
                     * Constructs a new BatchUpdateGenerativeQuestionConfigsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IBatchUpdateGenerativeQuestionConfigsResponse);

                    /** BatchUpdateGenerativeQuestionConfigsResponse generativeQuestionConfigs. */
                    public generativeQuestionConfigs: google.cloud.retail.v2.IGenerativeQuestionConfig[];

                    /**
                     * Creates a new BatchUpdateGenerativeQuestionConfigsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns BatchUpdateGenerativeQuestionConfigsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IBatchUpdateGenerativeQuestionConfigsResponse): google.cloud.retail.v2.BatchUpdateGenerativeQuestionConfigsResponse;

                    /**
                     * Encodes the specified BatchUpdateGenerativeQuestionConfigsResponse message. Does not implicitly {@link google.cloud.retail.v2.BatchUpdateGenerativeQuestionConfigsResponse.verify|verify} messages.
                     * @param message BatchUpdateGenerativeQuestionConfigsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IBatchUpdateGenerativeQuestionConfigsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified BatchUpdateGenerativeQuestionConfigsResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2.BatchUpdateGenerativeQuestionConfigsResponse.verify|verify} messages.
                     * @param message BatchUpdateGenerativeQuestionConfigsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IBatchUpdateGenerativeQuestionConfigsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a BatchUpdateGenerativeQuestionConfigsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns BatchUpdateGenerativeQuestionConfigsResponse
                     * @throws {Error} If the payload is not 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.retail.v2.BatchUpdateGenerativeQuestionConfigsResponse;

                    /**
                     * Decodes a BatchUpdateGenerativeQuestionConfigsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns BatchUpdateGenerativeQuestionConfigsResponse
                     * @throws {Error} If the payload 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.retail.v2.BatchUpdateGenerativeQuestionConfigsResponse;

                    /**
                     * Verifies a BatchUpdateGenerativeQuestionConfigsResponse message.
                     * @param message Plain 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 BatchUpdateGenerativeQuestionConfigsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns BatchUpdateGenerativeQuestionConfigsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.BatchUpdateGenerativeQuestionConfigsResponse;

                    /**
                     * Creates a plain object from a BatchUpdateGenerativeQuestionConfigsResponse message. Also converts values to other types if specified.
                     * @param message BatchUpdateGenerativeQuestionConfigsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.BatchUpdateGenerativeQuestionConfigsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this BatchUpdateGenerativeQuestionConfigsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for BatchUpdateGenerativeQuestionConfigsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a Model. */
                interface IModel {

                    /** Model name */
                    name?: (string|null);

                    /** Model displayName */
                    displayName?: (string|null);

                    /** Model trainingState */
                    trainingState?: (google.cloud.retail.v2.Model.TrainingState|keyof typeof google.cloud.retail.v2.Model.TrainingState|null);

                    /** Model servingState */
                    servingState?: (google.cloud.retail.v2.Model.ServingState|keyof typeof google.cloud.retail.v2.Model.ServingState|null);

                    /** Model createTime */
                    createTime?: (google.protobuf.ITimestamp|null);

                    /** Model updateTime */
                    updateTime?: (google.protobuf.ITimestamp|null);

                    /** Model type */
                    type?: (string|null);

                    /** Model optimizationObjective */
                    optimizationObjective?: (string|null);

                    /** Model periodicTuningState */
                    periodicTuningState?: (google.cloud.retail.v2.Model.PeriodicTuningState|keyof typeof google.cloud.retail.v2.Model.PeriodicTuningState|null);

                    /** Model lastTuneTime */
                    lastTuneTime?: (google.protobuf.ITimestamp|null);

                    /** Model tuningOperation */
                    tuningOperation?: (string|null);

                    /** Model dataState */
                    dataState?: (google.cloud.retail.v2.Model.DataState|keyof typeof google.cloud.retail.v2.Model.DataState|null);

                    /** Model filteringOption */
                    filteringOption?: (google.cloud.retail.v2.RecommendationsFilteringOption|keyof typeof google.cloud.retail.v2.RecommendationsFilteringOption|null);

                    /** Model servingConfigLists */
                    servingConfigLists?: (google.cloud.retail.v2.Model.IServingConfigList[]|null);

                    /** Model modelFeaturesConfig */
                    modelFeaturesConfig?: (google.cloud.retail.v2.Model.IModelFeaturesConfig|null);
                }

                /** Represents a Model. */
                class Model implements IModel {

                    /**
                     * Constructs a new Model.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IModel);

                    /** Model name. */
                    public name: string;

                    /** Model displayName. */
                    public displayName: string;

                    /** Model trainingState. */
                    public trainingState: (google.cloud.retail.v2.Model.TrainingState|keyof typeof google.cloud.retail.v2.Model.TrainingState);

                    /** Model servingState. */
                    public servingState: (google.cloud.retail.v2.Model.ServingState|keyof typeof google.cloud.retail.v2.Model.ServingState);

                    /** Model createTime. */
                    public createTime?: (google.protobuf.ITimestamp|null);

                    /** Model updateTime. */
                    public updateTime?: (google.protobuf.ITimestamp|null);

                    /** Model type. */
                    public type: string;

                    /** Model optimizationObjective. */
                    public optimizationObjective: string;

                    /** Model periodicTuningState. */
                    public periodicTuningState: (google.cloud.retail.v2.Model.PeriodicTuningState|keyof typeof google.cloud.retail.v2.Model.PeriodicTuningState);

                    /** Model lastTuneTime. */
                    public lastTuneTime?: (google.protobuf.ITimestamp|null);

                    /** Model tuningOperation. */
                    public tuningOperation: string;

                    /** Model dataState. */
                    public dataState: (google.cloud.retail.v2.Model.DataState|keyof typeof google.cloud.retail.v2.Model.DataState);

                    /** Model filteringOption. */
                    public filteringOption: (google.cloud.retail.v2.RecommendationsFilteringOption|keyof typeof google.cloud.retail.v2.RecommendationsFilteringOption);

                    /** Model servingConfigLists. */
                    public servingConfigLists: google.cloud.retail.v2.Model.IServingConfigList[];

                    /** Model modelFeaturesConfig. */
                    public modelFeaturesConfig?: (google.cloud.retail.v2.Model.IModelFeaturesConfig|null);

                    /**
                     * Creates a new Model instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Model instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IModel): google.cloud.retail.v2.Model;

                    /**
                     * Encodes the specified Model message. Does not implicitly {@link google.cloud.retail.v2.Model.verify|verify} messages.
                     * @param message Model message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IModel, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Model message, length delimited. Does not implicitly {@link google.cloud.retail.v2.Model.verify|verify} messages.
                     * @param message Model message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IModel, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Model message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Model
                     * @throws {Error} If the payload is not 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.retail.v2.Model;

                    /**
                     * Decodes a Model message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Model
                     * @throws {Error} If the payload 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.retail.v2.Model;

                    /**
                     * Verifies a Model message.
                     * @param message Plain 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 Model message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Model
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.Model;

                    /**
                     * Creates a plain object from a Model message. Also converts values to other types if specified.
                     * @param message Model
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.Model, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Model to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Model
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace Model {

                    /** Properties of a ServingConfigList. */
                    interface IServingConfigList {

                        /** ServingConfigList servingConfigIds */
                        servingConfigIds?: (string[]|null);
                    }

                    /** Represents a ServingConfigList. */
                    class ServingConfigList implements IServingConfigList {

                        /**
                         * Constructs a new ServingConfigList.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.Model.IServingConfigList);

                        /** ServingConfigList servingConfigIds. */
                        public servingConfigIds: string[];

                        /**
                         * Creates a new ServingConfigList instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ServingConfigList instance
                         */
                        public static create(properties?: google.cloud.retail.v2.Model.IServingConfigList): google.cloud.retail.v2.Model.ServingConfigList;

                        /**
                         * Encodes the specified ServingConfigList message. Does not implicitly {@link google.cloud.retail.v2.Model.ServingConfigList.verify|verify} messages.
                         * @param message ServingConfigList message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2.Model.IServingConfigList, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ServingConfigList message, length delimited. Does not implicitly {@link google.cloud.retail.v2.Model.ServingConfigList.verify|verify} messages.
                         * @param message ServingConfigList message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2.Model.IServingConfigList, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ServingConfigList message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ServingConfigList
                         * @throws {Error} If the payload is not 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.retail.v2.Model.ServingConfigList;

                        /**
                         * Decodes a ServingConfigList message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ServingConfigList
                         * @throws {Error} If the payload 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.retail.v2.Model.ServingConfigList;

                        /**
                         * Verifies a ServingConfigList message.
                         * @param message Plain 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 ServingConfigList message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ServingConfigList
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.Model.ServingConfigList;

                        /**
                         * Creates a plain object from a ServingConfigList message. Also converts values to other types if specified.
                         * @param message ServingConfigList
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2.Model.ServingConfigList, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ServingConfigList to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ServingConfigList
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a FrequentlyBoughtTogetherFeaturesConfig. */
                    interface IFrequentlyBoughtTogetherFeaturesConfig {

                        /** FrequentlyBoughtTogetherFeaturesConfig contextProductsType */
                        contextProductsType?: (google.cloud.retail.v2.Model.ContextProductsType|keyof typeof google.cloud.retail.v2.Model.ContextProductsType|null);
                    }

                    /** Represents a FrequentlyBoughtTogetherFeaturesConfig. */
                    class FrequentlyBoughtTogetherFeaturesConfig implements IFrequentlyBoughtTogetherFeaturesConfig {

                        /**
                         * Constructs a new FrequentlyBoughtTogetherFeaturesConfig.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.Model.IFrequentlyBoughtTogetherFeaturesConfig);

                        /** FrequentlyBoughtTogetherFeaturesConfig contextProductsType. */
                        public contextProductsType: (google.cloud.retail.v2.Model.ContextProductsType|keyof typeof google.cloud.retail.v2.Model.ContextProductsType);

                        /**
                         * Creates a new FrequentlyBoughtTogetherFeaturesConfig instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FrequentlyBoughtTogetherFeaturesConfig instance
                         */
                        public static create(properties?: google.cloud.retail.v2.Model.IFrequentlyBoughtTogetherFeaturesConfig): google.cloud.retail.v2.Model.FrequentlyBoughtTogetherFeaturesConfig;

                        /**
                         * Encodes the specified FrequentlyBoughtTogetherFeaturesConfig message. Does not implicitly {@link google.cloud.retail.v2.Model.FrequentlyBoughtTogetherFeaturesConfig.verify|verify} messages.
                         * @param message FrequentlyBoughtTogetherFeaturesConfig message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2.Model.IFrequentlyBoughtTogetherFeaturesConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FrequentlyBoughtTogetherFeaturesConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2.Model.FrequentlyBoughtTogetherFeaturesConfig.verify|verify} messages.
                         * @param message FrequentlyBoughtTogetherFeaturesConfig message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2.Model.IFrequentlyBoughtTogetherFeaturesConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FrequentlyBoughtTogetherFeaturesConfig message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FrequentlyBoughtTogetherFeaturesConfig
                         * @throws {Error} If the payload is not 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.retail.v2.Model.FrequentlyBoughtTogetherFeaturesConfig;

                        /**
                         * Decodes a FrequentlyBoughtTogetherFeaturesConfig message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FrequentlyBoughtTogetherFeaturesConfig
                         * @throws {Error} If the payload 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.retail.v2.Model.FrequentlyBoughtTogetherFeaturesConfig;

                        /**
                         * Verifies a FrequentlyBoughtTogetherFeaturesConfig message.
                         * @param message Plain 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 FrequentlyBoughtTogetherFeaturesConfig message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FrequentlyBoughtTogetherFeaturesConfig
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.Model.FrequentlyBoughtTogetherFeaturesConfig;

                        /**
                         * Creates a plain object from a FrequentlyBoughtTogetherFeaturesConfig message. Also converts values to other types if specified.
                         * @param message FrequentlyBoughtTogetherFeaturesConfig
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2.Model.FrequentlyBoughtTogetherFeaturesConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FrequentlyBoughtTogetherFeaturesConfig to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FrequentlyBoughtTogetherFeaturesConfig
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ModelFeaturesConfig. */
                    interface IModelFeaturesConfig {

                        /** ModelFeaturesConfig frequentlyBoughtTogetherConfig */
                        frequentlyBoughtTogetherConfig?: (google.cloud.retail.v2.Model.IFrequentlyBoughtTogetherFeaturesConfig|null);
                    }

                    /** Represents a ModelFeaturesConfig. */
                    class ModelFeaturesConfig implements IModelFeaturesConfig {

                        /**
                         * Constructs a new ModelFeaturesConfig.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.Model.IModelFeaturesConfig);

                        /** ModelFeaturesConfig frequentlyBoughtTogetherConfig. */
                        public frequentlyBoughtTogetherConfig?: (google.cloud.retail.v2.Model.IFrequentlyBoughtTogetherFeaturesConfig|null);

                        /** ModelFeaturesConfig typeDedicatedConfig. */
                        public typeDedicatedConfig?: "frequentlyBoughtTogetherConfig";

                        /**
                         * Creates a new ModelFeaturesConfig instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ModelFeaturesConfig instance
                         */
                        public static create(properties?: google.cloud.retail.v2.Model.IModelFeaturesConfig): google.cloud.retail.v2.Model.ModelFeaturesConfig;

                        /**
                         * Encodes the specified ModelFeaturesConfig message. Does not implicitly {@link google.cloud.retail.v2.Model.ModelFeaturesConfig.verify|verify} messages.
                         * @param message ModelFeaturesConfig message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2.Model.IModelFeaturesConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ModelFeaturesConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2.Model.ModelFeaturesConfig.verify|verify} messages.
                         * @param message ModelFeaturesConfig message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2.Model.IModelFeaturesConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ModelFeaturesConfig message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ModelFeaturesConfig
                         * @throws {Error} If the payload is not 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.retail.v2.Model.ModelFeaturesConfig;

                        /**
                         * Decodes a ModelFeaturesConfig message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ModelFeaturesConfig
                         * @throws {Error} If the payload 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.retail.v2.Model.ModelFeaturesConfig;

                        /**
                         * Verifies a ModelFeaturesConfig message.
                         * @param message Plain 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 ModelFeaturesConfig message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ModelFeaturesConfig
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.Model.ModelFeaturesConfig;

                        /**
                         * Creates a plain object from a ModelFeaturesConfig message. Also converts values to other types if specified.
                         * @param message ModelFeaturesConfig
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2.Model.ModelFeaturesConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ModelFeaturesConfig to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ModelFeaturesConfig
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** ServingState enum. */
                    enum ServingState {
                        SERVING_STATE_UNSPECIFIED = 0,
                        INACTIVE = 1,
                        ACTIVE = 2,
                        TUNED = 3
                    }

                    /** TrainingState enum. */
                    enum TrainingState {
                        TRAINING_STATE_UNSPECIFIED = 0,
                        PAUSED = 1,
                        TRAINING = 2
                    }

                    /** PeriodicTuningState enum. */
                    enum PeriodicTuningState {
                        PERIODIC_TUNING_STATE_UNSPECIFIED = 0,
                        PERIODIC_TUNING_DISABLED = 1,
                        ALL_TUNING_DISABLED = 3,
                        PERIODIC_TUNING_ENABLED = 2
                    }

                    /** DataState enum. */
                    enum DataState {
                        DATA_STATE_UNSPECIFIED = 0,
                        DATA_OK = 1,
                        DATA_ERROR = 2
                    }

                    /** ContextProductsType enum. */
                    enum ContextProductsType {
                        CONTEXT_PRODUCTS_TYPE_UNSPECIFIED = 0,
                        SINGLE_CONTEXT_PRODUCT = 1,
                        MULTIPLE_CONTEXT_PRODUCTS = 2
                    }
                }

                /** Represents a ModelService */
                class ModelService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new ModelService 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 ModelService 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): ModelService;

                    /**
                     * Calls CreateModel.
                     * @param request CreateModelRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public createModel(request: google.cloud.retail.v2.ICreateModelRequest, callback: google.cloud.retail.v2.ModelService.CreateModelCallback): void;

                    /**
                     * Calls CreateModel.
                     * @param request CreateModelRequest message or plain object
                     * @returns Promise
                     */
                    public createModel(request: google.cloud.retail.v2.ICreateModelRequest): Promise<google.longrunning.Operation>;

                    /**
                     * Calls GetModel.
                     * @param request GetModelRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Model
                     */
                    public getModel(request: google.cloud.retail.v2.IGetModelRequest, callback: google.cloud.retail.v2.ModelService.GetModelCallback): void;

                    /**
                     * Calls GetModel.
                     * @param request GetModelRequest message or plain object
                     * @returns Promise
                     */
                    public getModel(request: google.cloud.retail.v2.IGetModelRequest): Promise<google.cloud.retail.v2.Model>;

                    /**
                     * Calls PauseModel.
                     * @param request PauseModelRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Model
                     */
                    public pauseModel(request: google.cloud.retail.v2.IPauseModelRequest, callback: google.cloud.retail.v2.ModelService.PauseModelCallback): void;

                    /**
                     * Calls PauseModel.
                     * @param request PauseModelRequest message or plain object
                     * @returns Promise
                     */
                    public pauseModel(request: google.cloud.retail.v2.IPauseModelRequest): Promise<google.cloud.retail.v2.Model>;

                    /**
                     * Calls ResumeModel.
                     * @param request ResumeModelRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Model
                     */
                    public resumeModel(request: google.cloud.retail.v2.IResumeModelRequest, callback: google.cloud.retail.v2.ModelService.ResumeModelCallback): void;

                    /**
                     * Calls ResumeModel.
                     * @param request ResumeModelRequest message or plain object
                     * @returns Promise
                     */
                    public resumeModel(request: google.cloud.retail.v2.IResumeModelRequest): Promise<google.cloud.retail.v2.Model>;

                    /**
                     * Calls DeleteModel.
                     * @param request DeleteModelRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Empty
                     */
                    public deleteModel(request: google.cloud.retail.v2.IDeleteModelRequest, callback: google.cloud.retail.v2.ModelService.DeleteModelCallback): void;

                    /**
                     * Calls DeleteModel.
                     * @param request DeleteModelRequest message or plain object
                     * @returns Promise
                     */
                    public deleteModel(request: google.cloud.retail.v2.IDeleteModelRequest): Promise<google.protobuf.Empty>;

                    /**
                     * Calls ListModels.
                     * @param request ListModelsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListModelsResponse
                     */
                    public listModels(request: google.cloud.retail.v2.IListModelsRequest, callback: google.cloud.retail.v2.ModelService.ListModelsCallback): void;

                    /**
                     * Calls ListModels.
                     * @param request ListModelsRequest message or plain object
                     * @returns Promise
                     */
                    public listModels(request: google.cloud.retail.v2.IListModelsRequest): Promise<google.cloud.retail.v2.ListModelsResponse>;

                    /**
                     * Calls UpdateModel.
                     * @param request UpdateModelRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Model
                     */
                    public updateModel(request: google.cloud.retail.v2.IUpdateModelRequest, callback: google.cloud.retail.v2.ModelService.UpdateModelCallback): void;

                    /**
                     * Calls UpdateModel.
                     * @param request UpdateModelRequest message or plain object
                     * @returns Promise
                     */
                    public updateModel(request: google.cloud.retail.v2.IUpdateModelRequest): Promise<google.cloud.retail.v2.Model>;

                    /**
                     * Calls TuneModel.
                     * @param request TuneModelRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public tuneModel(request: google.cloud.retail.v2.ITuneModelRequest, callback: google.cloud.retail.v2.ModelService.TuneModelCallback): void;

                    /**
                     * Calls TuneModel.
                     * @param request TuneModelRequest message or plain object
                     * @returns Promise
                     */
                    public tuneModel(request: google.cloud.retail.v2.ITuneModelRequest): Promise<google.longrunning.Operation>;
                }

                namespace ModelService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.ModelService|createModel}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type CreateModelCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.ModelService|getModel}.
                     * @param error Error, if any
                     * @param [response] Model
                     */
                    type GetModelCallback = (error: (Error|null), response?: google.cloud.retail.v2.Model) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.ModelService|pauseModel}.
                     * @param error Error, if any
                     * @param [response] Model
                     */
                    type PauseModelCallback = (error: (Error|null), response?: google.cloud.retail.v2.Model) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.ModelService|resumeModel}.
                     * @param error Error, if any
                     * @param [response] Model
                     */
                    type ResumeModelCallback = (error: (Error|null), response?: google.cloud.retail.v2.Model) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.ModelService|deleteModel}.
                     * @param error Error, if any
                     * @param [response] Empty
                     */
                    type DeleteModelCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.ModelService|listModels}.
                     * @param error Error, if any
                     * @param [response] ListModelsResponse
                     */
                    type ListModelsCallback = (error: (Error|null), response?: google.cloud.retail.v2.ListModelsResponse) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.ModelService|updateModel}.
                     * @param error Error, if any
                     * @param [response] Model
                     */
                    type UpdateModelCallback = (error: (Error|null), response?: google.cloud.retail.v2.Model) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.ModelService|tuneModel}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type TuneModelCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;
                }

                /** Properties of a CreateModelRequest. */
                interface ICreateModelRequest {

                    /** CreateModelRequest parent */
                    parent?: (string|null);

                    /** CreateModelRequest model */
                    model?: (google.cloud.retail.v2.IModel|null);

                    /** CreateModelRequest dryRun */
                    dryRun?: (boolean|null);
                }

                /** Represents a CreateModelRequest. */
                class CreateModelRequest implements ICreateModelRequest {

                    /**
                     * Constructs a new CreateModelRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.ICreateModelRequest);

                    /** CreateModelRequest parent. */
                    public parent: string;

                    /** CreateModelRequest model. */
                    public model?: (google.cloud.retail.v2.IModel|null);

                    /** CreateModelRequest dryRun. */
                    public dryRun: boolean;

                    /**
                     * Creates a new CreateModelRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CreateModelRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.ICreateModelRequest): google.cloud.retail.v2.CreateModelRequest;

                    /**
                     * Encodes the specified CreateModelRequest message. Does not implicitly {@link google.cloud.retail.v2.CreateModelRequest.verify|verify} messages.
                     * @param message CreateModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.ICreateModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CreateModelRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2.CreateModelRequest.verify|verify} messages.
                     * @param message CreateModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.ICreateModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CreateModelRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CreateModelRequest
                     * @throws {Error} If the payload is not 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.retail.v2.CreateModelRequest;

                    /**
                     * Decodes a CreateModelRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CreateModelRequest
                     * @throws {Error} If the payload 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.retail.v2.CreateModelRequest;

                    /**
                     * Verifies a CreateModelRequest message.
                     * @param message Plain 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 CreateModelRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CreateModelRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.CreateModelRequest;

                    /**
                     * Creates a plain object from a CreateModelRequest message. Also converts values to other types if specified.
                     * @param message CreateModelRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.CreateModelRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CreateModelRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CreateModelRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateModelRequest. */
                interface IUpdateModelRequest {

                    /** UpdateModelRequest model */
                    model?: (google.cloud.retail.v2.IModel|null);

                    /** UpdateModelRequest updateMask */
                    updateMask?: (google.protobuf.IFieldMask|null);
                }

                /** Represents an UpdateModelRequest. */
                class UpdateModelRequest implements IUpdateModelRequest {

                    /**
                     * Constructs a new UpdateModelRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IUpdateModelRequest);

                    /** UpdateModelRequest model. */
                    public model?: (google.cloud.retail.v2.IModel|null);

                    /** UpdateModelRequest updateMask. */
                    public updateMask?: (google.protobuf.IFieldMask|null);

                    /**
                     * Creates a new UpdateModelRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateModelRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IUpdateModelRequest): google.cloud.retail.v2.UpdateModelRequest;

                    /**
                     * Encodes the specified UpdateModelRequest message. Does not implicitly {@link google.cloud.retail.v2.UpdateModelRequest.verify|verify} messages.
                     * @param message UpdateModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IUpdateModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateModelRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2.UpdateModelRequest.verify|verify} messages.
                     * @param message UpdateModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IUpdateModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateModelRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateModelRequest
                     * @throws {Error} If the payload is not 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.retail.v2.UpdateModelRequest;

                    /**
                     * Decodes an UpdateModelRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateModelRequest
                     * @throws {Error} If the payload 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.retail.v2.UpdateModelRequest;

                    /**
                     * Verifies an UpdateModelRequest message.
                     * @param message Plain 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 UpdateModelRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateModelRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.UpdateModelRequest;

                    /**
                     * Creates a plain object from an UpdateModelRequest message. Also converts values to other types if specified.
                     * @param message UpdateModelRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.UpdateModelRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateModelRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateModelRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetModelRequest. */
                interface IGetModelRequest {

                    /** GetModelRequest name */
                    name?: (string|null);
                }

                /** Represents a GetModelRequest. */
                class GetModelRequest implements IGetModelRequest {

                    /**
                     * Constructs a new GetModelRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IGetModelRequest);

                    /** GetModelRequest name. */
                    public name: string;

                    /**
                     * Creates a new GetModelRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetModelRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IGetModelRequest): google.cloud.retail.v2.GetModelRequest;

                    /**
                     * Encodes the specified GetModelRequest message. Does not implicitly {@link google.cloud.retail.v2.GetModelRequest.verify|verify} messages.
                     * @param message GetModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IGetModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetModelRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2.GetModelRequest.verify|verify} messages.
                     * @param message GetModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IGetModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetModelRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetModelRequest
                     * @throws {Error} If the payload is not 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.retail.v2.GetModelRequest;

                    /**
                     * Decodes a GetModelRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetModelRequest
                     * @throws {Error} If the payload 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.retail.v2.GetModelRequest;

                    /**
                     * Verifies a GetModelRequest message.
                     * @param message Plain 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 GetModelRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetModelRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.GetModelRequest;

                    /**
                     * Creates a plain object from a GetModelRequest message. Also converts values to other types if specified.
                     * @param message GetModelRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.GetModelRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetModelRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetModelRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PauseModelRequest. */
                interface IPauseModelRequest {

                    /** PauseModelRequest name */
                    name?: (string|null);
                }

                /** Represents a PauseModelRequest. */
                class PauseModelRequest implements IPauseModelRequest {

                    /**
                     * Constructs a new PauseModelRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IPauseModelRequest);

                    /** PauseModelRequest name. */
                    public name: string;

                    /**
                     * Creates a new PauseModelRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PauseModelRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IPauseModelRequest): google.cloud.retail.v2.PauseModelRequest;

                    /**
                     * Encodes the specified PauseModelRequest message. Does not implicitly {@link google.cloud.retail.v2.PauseModelRequest.verify|verify} messages.
                     * @param message PauseModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IPauseModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PauseModelRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2.PauseModelRequest.verify|verify} messages.
                     * @param message PauseModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IPauseModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PauseModelRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PauseModelRequest
                     * @throws {Error} If the payload is not 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.retail.v2.PauseModelRequest;

                    /**
                     * Decodes a PauseModelRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PauseModelRequest
                     * @throws {Error} If the payload 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.retail.v2.PauseModelRequest;

                    /**
                     * Verifies a PauseModelRequest message.
                     * @param message Plain 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 PauseModelRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PauseModelRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.PauseModelRequest;

                    /**
                     * Creates a plain object from a PauseModelRequest message. Also converts values to other types if specified.
                     * @param message PauseModelRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.PauseModelRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PauseModelRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PauseModelRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ResumeModelRequest. */
                interface IResumeModelRequest {

                    /** ResumeModelRequest name */
                    name?: (string|null);
                }

                /** Represents a ResumeModelRequest. */
                class ResumeModelRequest implements IResumeModelRequest {

                    /**
                     * Constructs a new ResumeModelRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IResumeModelRequest);

                    /** ResumeModelRequest name. */
                    public name: string;

                    /**
                     * Creates a new ResumeModelRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ResumeModelRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IResumeModelRequest): google.cloud.retail.v2.ResumeModelRequest;

                    /**
                     * Encodes the specified ResumeModelRequest message. Does not implicitly {@link google.cloud.retail.v2.ResumeModelRequest.verify|verify} messages.
                     * @param message ResumeModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IResumeModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ResumeModelRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2.ResumeModelRequest.verify|verify} messages.
                     * @param message ResumeModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IResumeModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ResumeModelRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ResumeModelRequest
                     * @throws {Error} If the payload is not 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.retail.v2.ResumeModelRequest;

                    /**
                     * Decodes a ResumeModelRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ResumeModelRequest
                     * @throws {Error} If the payload 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.retail.v2.ResumeModelRequest;

                    /**
                     * Verifies a ResumeModelRequest message.
                     * @param message Plain 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 ResumeModelRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ResumeModelRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ResumeModelRequest;

                    /**
                     * Creates a plain object from a ResumeModelRequest message. Also converts values to other types if specified.
                     * @param message ResumeModelRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.ResumeModelRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ResumeModelRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ResumeModelRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListModelsRequest. */
                interface IListModelsRequest {

                    /** ListModelsRequest parent */
                    parent?: (string|null);

                    /** ListModelsRequest pageSize */
                    pageSize?: (number|null);

                    /** ListModelsRequest pageToken */
                    pageToken?: (string|null);
                }

                /** Represents a ListModelsRequest. */
                class ListModelsRequest implements IListModelsRequest {

                    /**
                     * Constructs a new ListModelsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IListModelsRequest);

                    /** ListModelsRequest parent. */
                    public parent: string;

                    /** ListModelsRequest pageSize. */
                    public pageSize: number;

                    /** ListModelsRequest pageToken. */
                    public pageToken: string;

                    /**
                     * Creates a new ListModelsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListModelsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IListModelsRequest): google.cloud.retail.v2.ListModelsRequest;

                    /**
                     * Encodes the specified ListModelsRequest message. Does not implicitly {@link google.cloud.retail.v2.ListModelsRequest.verify|verify} messages.
                     * @param message ListModelsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IListModelsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListModelsRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2.ListModelsRequest.verify|verify} messages.
                     * @param message ListModelsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IListModelsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListModelsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListModelsRequest
                     * @throws {Error} If the payload is not 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.retail.v2.ListModelsRequest;

                    /**
                     * Decodes a ListModelsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListModelsRequest
                     * @throws {Error} If the payload 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.retail.v2.ListModelsRequest;

                    /**
                     * Verifies a ListModelsRequest message.
                     * @param message Plain 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 ListModelsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListModelsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ListModelsRequest;

                    /**
                     * Creates a plain object from a ListModelsRequest message. Also converts values to other types if specified.
                     * @param message ListModelsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.ListModelsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListModelsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListModelsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeleteModelRequest. */
                interface IDeleteModelRequest {

                    /** DeleteModelRequest name */
                    name?: (string|null);
                }

                /** Represents a DeleteModelRequest. */
                class DeleteModelRequest implements IDeleteModelRequest {

                    /**
                     * Constructs a new DeleteModelRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IDeleteModelRequest);

                    /** DeleteModelRequest name. */
                    public name: string;

                    /**
                     * Creates a new DeleteModelRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeleteModelRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IDeleteModelRequest): google.cloud.retail.v2.DeleteModelRequest;

                    /**
                     * Encodes the specified DeleteModelRequest message. Does not implicitly {@link google.cloud.retail.v2.DeleteModelRequest.verify|verify} messages.
                     * @param message DeleteModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IDeleteModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeleteModelRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2.DeleteModelRequest.verify|verify} messages.
                     * @param message DeleteModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IDeleteModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeleteModelRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeleteModelRequest
                     * @throws {Error} If the payload is not 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.retail.v2.DeleteModelRequest;

                    /**
                     * Decodes a DeleteModelRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeleteModelRequest
                     * @throws {Error} If the payload 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.retail.v2.DeleteModelRequest;

                    /**
                     * Verifies a DeleteModelRequest message.
                     * @param message Plain 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 DeleteModelRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeleteModelRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.DeleteModelRequest;

                    /**
                     * Creates a plain object from a DeleteModelRequest message. Also converts values to other types if specified.
                     * @param message DeleteModelRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.DeleteModelRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeleteModelRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeleteModelRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListModelsResponse. */
                interface IListModelsResponse {

                    /** ListModelsResponse models */
                    models?: (google.cloud.retail.v2.IModel[]|null);

                    /** ListModelsResponse nextPageToken */
                    nextPageToken?: (string|null);
                }

                /** Represents a ListModelsResponse. */
                class ListModelsResponse implements IListModelsResponse {

                    /**
                     * Constructs a new ListModelsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IListModelsResponse);

                    /** ListModelsResponse models. */
                    public models: google.cloud.retail.v2.IModel[];

                    /** ListModelsResponse nextPageToken. */
                    public nextPageToken: string;

                    /**
                     * Creates a new ListModelsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListModelsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IListModelsResponse): google.cloud.retail.v2.ListModelsResponse;

                    /**
                     * Encodes the specified ListModelsResponse message. Does not implicitly {@link google.cloud.retail.v2.ListModelsResponse.verify|verify} messages.
                     * @param message ListModelsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IListModelsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListModelsResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2.ListModelsResponse.verify|verify} messages.
                     * @param message ListModelsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IListModelsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListModelsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListModelsResponse
                     * @throws {Error} If the payload is not 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.retail.v2.ListModelsResponse;

                    /**
                     * Decodes a ListModelsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListModelsResponse
                     * @throws {Error} If the payload 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.retail.v2.ListModelsResponse;

                    /**
                     * Verifies a ListModelsResponse message.
                     * @param message Plain 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 ListModelsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListModelsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ListModelsResponse;

                    /**
                     * Creates a plain object from a ListModelsResponse message. Also converts values to other types if specified.
                     * @param message ListModelsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.ListModelsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListModelsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListModelsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TuneModelRequest. */
                interface ITuneModelRequest {

                    /** TuneModelRequest name */
                    name?: (string|null);
                }

                /** Represents a TuneModelRequest. */
                class TuneModelRequest implements ITuneModelRequest {

                    /**
                     * Constructs a new TuneModelRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.ITuneModelRequest);

                    /** TuneModelRequest name. */
                    public name: string;

                    /**
                     * Creates a new TuneModelRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TuneModelRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.ITuneModelRequest): google.cloud.retail.v2.TuneModelRequest;

                    /**
                     * Encodes the specified TuneModelRequest message. Does not implicitly {@link google.cloud.retail.v2.TuneModelRequest.verify|verify} messages.
                     * @param message TuneModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.ITuneModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TuneModelRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2.TuneModelRequest.verify|verify} messages.
                     * @param message TuneModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.ITuneModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TuneModelRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TuneModelRequest
                     * @throws {Error} If the payload is not 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.retail.v2.TuneModelRequest;

                    /**
                     * Decodes a TuneModelRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TuneModelRequest
                     * @throws {Error} If the payload 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.retail.v2.TuneModelRequest;

                    /**
                     * Verifies a TuneModelRequest message.
                     * @param message Plain 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 TuneModelRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TuneModelRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.TuneModelRequest;

                    /**
                     * Creates a plain object from a TuneModelRequest message. Also converts values to other types if specified.
                     * @param message TuneModelRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.TuneModelRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TuneModelRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TuneModelRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CreateModelMetadata. */
                interface ICreateModelMetadata {

                    /** CreateModelMetadata model */
                    model?: (string|null);
                }

                /** Represents a CreateModelMetadata. */
                class CreateModelMetadata implements ICreateModelMetadata {

                    /**
                     * Constructs a new CreateModelMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.ICreateModelMetadata);

                    /** CreateModelMetadata model. */
                    public model: string;

                    /**
                     * Creates a new CreateModelMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CreateModelMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2.ICreateModelMetadata): google.cloud.retail.v2.CreateModelMetadata;

                    /**
                     * Encodes the specified CreateModelMetadata message. Does not implicitly {@link google.cloud.retail.v2.CreateModelMetadata.verify|verify} messages.
                     * @param message CreateModelMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.ICreateModelMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CreateModelMetadata message, length delimited. Does not implicitly {@link google.cloud.retail.v2.CreateModelMetadata.verify|verify} messages.
                     * @param message CreateModelMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.ICreateModelMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CreateModelMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CreateModelMetadata
                     * @throws {Error} If the payload is not 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.retail.v2.CreateModelMetadata;

                    /**
                     * Decodes a CreateModelMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CreateModelMetadata
                     * @throws {Error} If the payload 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.retail.v2.CreateModelMetadata;

                    /**
                     * Verifies a CreateModelMetadata message.
                     * @param message Plain 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 CreateModelMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CreateModelMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.CreateModelMetadata;

                    /**
                     * Creates a plain object from a CreateModelMetadata message. Also converts values to other types if specified.
                     * @param message CreateModelMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.CreateModelMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CreateModelMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CreateModelMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TuneModelMetadata. */
                interface ITuneModelMetadata {

                    /** TuneModelMetadata model */
                    model?: (string|null);
                }

                /** Represents a TuneModelMetadata. */
                class TuneModelMetadata implements ITuneModelMetadata {

                    /**
                     * Constructs a new TuneModelMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.ITuneModelMetadata);

                    /** TuneModelMetadata model. */
                    public model: string;

                    /**
                     * Creates a new TuneModelMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TuneModelMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2.ITuneModelMetadata): google.cloud.retail.v2.TuneModelMetadata;

                    /**
                     * Encodes the specified TuneModelMetadata message. Does not implicitly {@link google.cloud.retail.v2.TuneModelMetadata.verify|verify} messages.
                     * @param message TuneModelMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.ITuneModelMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TuneModelMetadata message, length delimited. Does not implicitly {@link google.cloud.retail.v2.TuneModelMetadata.verify|verify} messages.
                     * @param message TuneModelMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.ITuneModelMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TuneModelMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TuneModelMetadata
                     * @throws {Error} If the payload is not 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.retail.v2.TuneModelMetadata;

                    /**
                     * Decodes a TuneModelMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TuneModelMetadata
                     * @throws {Error} If the payload 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.retail.v2.TuneModelMetadata;

                    /**
                     * Verifies a TuneModelMetadata message.
                     * @param message Plain 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 TuneModelMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TuneModelMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.TuneModelMetadata;

                    /**
                     * Creates a plain object from a TuneModelMetadata message. Also converts values to other types if specified.
                     * @param message TuneModelMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.TuneModelMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TuneModelMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TuneModelMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TuneModelResponse. */
                interface ITuneModelResponse {
                }

                /** Represents a TuneModelResponse. */
                class TuneModelResponse implements ITuneModelResponse {

                    /**
                     * Constructs a new TuneModelResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.ITuneModelResponse);

                    /**
                     * Creates a new TuneModelResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TuneModelResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2.ITuneModelResponse): google.cloud.retail.v2.TuneModelResponse;

                    /**
                     * Encodes the specified TuneModelResponse message. Does not implicitly {@link google.cloud.retail.v2.TuneModelResponse.verify|verify} messages.
                     * @param message TuneModelResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.ITuneModelResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TuneModelResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2.TuneModelResponse.verify|verify} messages.
                     * @param message TuneModelResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.ITuneModelResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TuneModelResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TuneModelResponse
                     * @throws {Error} If the payload is not 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.retail.v2.TuneModelResponse;

                    /**
                     * Decodes a TuneModelResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TuneModelResponse
                     * @throws {Error} If the payload 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.retail.v2.TuneModelResponse;

                    /**
                     * Verifies a TuneModelResponse message.
                     * @param message Plain 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 TuneModelResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TuneModelResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.TuneModelResponse;

                    /**
                     * Creates a plain object from a TuneModelResponse message. Also converts values to other types if specified.
                     * @param message TuneModelResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.TuneModelResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TuneModelResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TuneModelResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Represents a PredictionService */
                class PredictionService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new PredictionService 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 PredictionService 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): PredictionService;

                    /**
                     * Calls Predict.
                     * @param request PredictRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and PredictResponse
                     */
                    public predict(request: google.cloud.retail.v2.IPredictRequest, callback: google.cloud.retail.v2.PredictionService.PredictCallback): void;

                    /**
                     * Calls Predict.
                     * @param request PredictRequest message or plain object
                     * @returns Promise
                     */
                    public predict(request: google.cloud.retail.v2.IPredictRequest): Promise<google.cloud.retail.v2.PredictResponse>;
                }

                namespace PredictionService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.PredictionService|predict}.
                     * @param error Error, if any
                     * @param [response] PredictResponse
                     */
                    type PredictCallback = (error: (Error|null), response?: google.cloud.retail.v2.PredictResponse) => void;
                }

                /** Properties of a PredictRequest. */
                interface IPredictRequest {

                    /** PredictRequest placement */
                    placement?: (string|null);

                    /** PredictRequest userEvent */
                    userEvent?: (google.cloud.retail.v2.IUserEvent|null);

                    /** PredictRequest pageSize */
                    pageSize?: (number|null);

                    /** PredictRequest pageToken */
                    pageToken?: (string|null);

                    /** PredictRequest filter */
                    filter?: (string|null);

                    /** PredictRequest validateOnly */
                    validateOnly?: (boolean|null);

                    /** PredictRequest params */
                    params?: ({ [k: string]: google.protobuf.IValue }|null);

                    /** PredictRequest labels */
                    labels?: ({ [k: string]: string }|null);
                }

                /** Represents a PredictRequest. */
                class PredictRequest implements IPredictRequest {

                    /**
                     * Constructs a new PredictRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IPredictRequest);

                    /** PredictRequest placement. */
                    public placement: string;

                    /** PredictRequest userEvent. */
                    public userEvent?: (google.cloud.retail.v2.IUserEvent|null);

                    /** PredictRequest pageSize. */
                    public pageSize: number;

                    /** PredictRequest pageToken. */
                    public pageToken: string;

                    /** PredictRequest filter. */
                    public filter: string;

                    /** PredictRequest validateOnly. */
                    public validateOnly: boolean;

                    /** PredictRequest params. */
                    public params: { [k: string]: google.protobuf.IValue };

                    /** PredictRequest labels. */
                    public labels: { [k: string]: string };

                    /**
                     * Creates a new PredictRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PredictRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IPredictRequest): google.cloud.retail.v2.PredictRequest;

                    /**
                     * Encodes the specified PredictRequest message. Does not implicitly {@link google.cloud.retail.v2.PredictRequest.verify|verify} messages.
                     * @param message PredictRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IPredictRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PredictRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2.PredictRequest.verify|verify} messages.
                     * @param message PredictRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IPredictRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PredictRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PredictRequest
                     * @throws {Error} If the payload is not 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.retail.v2.PredictRequest;

                    /**
                     * Decodes a PredictRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PredictRequest
                     * @throws {Error} If the payload 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.retail.v2.PredictRequest;

                    /**
                     * Verifies a PredictRequest message.
                     * @param message Plain 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 PredictRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PredictRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.PredictRequest;

                    /**
                     * Creates a plain object from a PredictRequest message. Also converts values to other types if specified.
                     * @param message PredictRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.PredictRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PredictRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PredictRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PredictResponse. */
                interface IPredictResponse {

                    /** PredictResponse results */
                    results?: (google.cloud.retail.v2.PredictResponse.IPredictionResult[]|null);

                    /** PredictResponse attributionToken */
                    attributionToken?: (string|null);

                    /** PredictResponse missingIds */
                    missingIds?: (string[]|null);

                    /** PredictResponse validateOnly */
                    validateOnly?: (boolean|null);
                }

                /** Represents a PredictResponse. */
                class PredictResponse implements IPredictResponse {

                    /**
                     * Constructs a new PredictResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IPredictResponse);

                    /** PredictResponse results. */
                    public results: google.cloud.retail.v2.PredictResponse.IPredictionResult[];

                    /** PredictResponse attributionToken. */
                    public attributionToken: string;

                    /** PredictResponse missingIds. */
                    public missingIds: string[];

                    /** PredictResponse validateOnly. */
                    public validateOnly: boolean;

                    /**
                     * Creates a new PredictResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PredictResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IPredictResponse): google.cloud.retail.v2.PredictResponse;

                    /**
                     * Encodes the specified PredictResponse message. Does not implicitly {@link google.cloud.retail.v2.PredictResponse.verify|verify} messages.
                     * @param message PredictResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IPredictResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PredictResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2.PredictResponse.verify|verify} messages.
                     * @param message PredictResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IPredictResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PredictResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PredictResponse
                     * @throws {Error} If the payload is not 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.retail.v2.PredictResponse;

                    /**
                     * Decodes a PredictResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PredictResponse
                     * @throws {Error} If the payload 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.retail.v2.PredictResponse;

                    /**
                     * Verifies a PredictResponse message.
                     * @param message Plain 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 PredictResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PredictResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.PredictResponse;

                    /**
                     * Creates a plain object from a PredictResponse message. Also converts values to other types if specified.
                     * @param message PredictResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.PredictResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PredictResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PredictResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace PredictResponse {

                    /** Properties of a PredictionResult. */
                    interface IPredictionResult {

                        /** PredictionResult id */
                        id?: (string|null);

                        /** PredictionResult metadata */
                        metadata?: ({ [k: string]: google.protobuf.IValue }|null);
                    }

                    /** Represents a PredictionResult. */
                    class PredictionResult implements IPredictionResult {

                        /**
                         * Constructs a new PredictionResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2.PredictResponse.IPredictionResult);

                        /** PredictionResult id. */
                        public id: string;

                        /** PredictionResult metadata. */
                        public metadata: { [k: string]: google.protobuf.IValue };

                        /**
                         * Creates a new PredictionResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PredictionResult instance
                         */
                        public static create(properties?: google.cloud.retail.v2.PredictResponse.IPredictionResult): google.cloud.retail.v2.PredictResponse.PredictionResult;

                        /**
                         * Encodes the specified PredictionResult message. Does not implicitly {@link google.cloud.retail.v2.PredictResponse.PredictionResult.verify|verify} messages.
                         * @param message PredictionResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2.PredictResponse.IPredictionResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PredictionResult message, length delimited. Does not implicitly {@link google.cloud.retail.v2.PredictResponse.PredictionResult.verify|verify} messages.
                         * @param message PredictionResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2.PredictResponse.IPredictionResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PredictionResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PredictionResult
                         * @throws {Error} If the payload is not 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.retail.v2.PredictResponse.PredictionResult;

                        /**
                         * Decodes a PredictionResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PredictionResult
                         * @throws {Error} If the payload 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.retail.v2.PredictResponse.PredictionResult;

                        /**
                         * Verifies a PredictionResult message.
                         * @param message Plain 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 PredictionResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PredictionResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.PredictResponse.PredictionResult;

                        /**
                         * Creates a plain object from a PredictionResult message. Also converts values to other types if specified.
                         * @param message PredictionResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2.PredictResponse.PredictionResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PredictionResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PredictionResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Represents a ProductService */
                class ProductService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new ProductService 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 ProductService 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): ProductService;

                    /**
                     * Calls CreateProduct.
                     * @param request CreateProductRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Product
                     */
                    public createProduct(request: google.cloud.retail.v2.ICreateProductRequest, callback: google.cloud.retail.v2.ProductService.CreateProductCallback): void;

                    /**
                     * Calls CreateProduct.
                     * @param request CreateProductRequest message or plain object
                     * @returns Promise
                     */
                    public createProduct(request: google.cloud.retail.v2.ICreateProductRequest): Promise<google.cloud.retail.v2.Product>;

                    /**
                     * Calls GetProduct.
                     * @param request GetProductRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Product
                     */
                    public getProduct(request: google.cloud.retail.v2.IGetProductRequest, callback: google.cloud.retail.v2.ProductService.GetProductCallback): void;

                    /**
                     * Calls GetProduct.
                     * @param request GetProductRequest message or plain object
                     * @returns Promise
                     */
                    public getProduct(request: google.cloud.retail.v2.IGetProductRequest): Promise<google.cloud.retail.v2.Product>;

                    /**
                     * Calls ListProducts.
                     * @param request ListProductsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListProductsResponse
                     */
                    public listProducts(request: google.cloud.retail.v2.IListProductsRequest, callback: google.cloud.retail.v2.ProductService.ListProductsCallback): void;

                    /**
                     * Calls ListProducts.
                     * @param request ListProductsRequest message or plain object
                     * @returns Promise
                     */
                    public listProducts(request: google.cloud.retail.v2.IListProductsRequest): Promise<google.cloud.retail.v2.ListProductsResponse>;

                    /**
                     * Calls UpdateProduct.
                     * @param request UpdateProductRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Product
                     */
                    public updateProduct(request: google.cloud.retail.v2.IUpdateProductRequest, callback: google.cloud.retail.v2.ProductService.UpdateProductCallback): void;

                    /**
                     * Calls UpdateProduct.
                     * @param request UpdateProductRequest message or plain object
                     * @returns Promise
                     */
                    public updateProduct(request: google.cloud.retail.v2.IUpdateProductRequest): Promise<google.cloud.retail.v2.Product>;

                    /**
                     * Calls DeleteProduct.
                     * @param request DeleteProductRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Empty
                     */
                    public deleteProduct(request: google.cloud.retail.v2.IDeleteProductRequest, callback: google.cloud.retail.v2.ProductService.DeleteProductCallback): void;

                    /**
                     * Calls DeleteProduct.
                     * @param request DeleteProductRequest message or plain object
                     * @returns Promise
                     */
                    public deleteProduct(request: google.cloud.retail.v2.IDeleteProductRequest): Promise<google.protobuf.Empty>;

                    /**
                     * Calls PurgeProducts.
                     * @param request PurgeProductsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public purgeProducts(request: google.cloud.retail.v2.IPurgeProductsRequest, callback: google.cloud.retail.v2.ProductService.PurgeProductsCallback): void;

                    /**
                     * Calls PurgeProducts.
                     * @param request PurgeProductsRequest message or plain object
                     * @returns Promise
                     */
                    public purgeProducts(request: google.cloud.retail.v2.IPurgeProductsRequest): Promise<google.longrunning.Operation>;

                    /**
                     * Calls ImportProducts.
                     * @param request ImportProductsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public importProducts(request: google.cloud.retail.v2.IImportProductsRequest, callback: google.cloud.retail.v2.ProductService.ImportProductsCallback): void;

                    /**
                     * Calls ImportProducts.
                     * @param request ImportProductsRequest message or plain object
                     * @returns Promise
                     */
                    public importProducts(request: google.cloud.retail.v2.IImportProductsRequest): Promise<google.longrunning.Operation>;

                    /**
                     * Calls SetInventory.
                     * @param request SetInventoryRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public setInventory(request: google.cloud.retail.v2.ISetInventoryRequest, callback: google.cloud.retail.v2.ProductService.SetInventoryCallback): void;

                    /**
                     * Calls SetInventory.
                     * @param request SetInventoryRequest message or plain object
                     * @returns Promise
                     */
                    public setInventory(request: google.cloud.retail.v2.ISetInventoryRequest): Promise<google.longrunning.Operation>;

                    /**
                     * Calls AddFulfillmentPlaces.
                     * @param request AddFulfillmentPlacesRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public addFulfillmentPlaces(request: google.cloud.retail.v2.IAddFulfillmentPlacesRequest, callback: google.cloud.retail.v2.ProductService.AddFulfillmentPlacesCallback): void;

                    /**
                     * Calls AddFulfillmentPlaces.
                     * @param request AddFulfillmentPlacesRequest message or plain object
                     * @returns Promise
                     */
                    public addFulfillmentPlaces(request: google.cloud.retail.v2.IAddFulfillmentPlacesRequest): Promise<google.longrunning.Operation>;

                    /**
                     * Calls RemoveFulfillmentPlaces.
                     * @param request RemoveFulfillmentPlacesRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public removeFulfillmentPlaces(request: google.cloud.retail.v2.IRemoveFulfillmentPlacesRequest, callback: google.cloud.retail.v2.ProductService.RemoveFulfillmentPlacesCallback): void;

                    /**
                     * Calls RemoveFulfillmentPlaces.
                     * @param request RemoveFulfillmentPlacesRequest message or plain object
                     * @returns Promise
                     */
                    public removeFulfillmentPlaces(request: google.cloud.retail.v2.IRemoveFulfillmentPlacesRequest): Promise<google.longrunning.Operation>;

                    /**
                     * Calls AddLocalInventories.
                     * @param request AddLocalInventoriesRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public addLocalInventories(request: google.cloud.retail.v2.IAddLocalInventoriesRequest, callback: google.cloud.retail.v2.ProductService.AddLocalInventoriesCallback): void;

                    /**
                     * Calls AddLocalInventories.
                     * @param request AddLocalInventoriesRequest message or plain object
                     * @returns Promise
                     */
                    public addLocalInventories(request: google.cloud.retail.v2.IAddLocalInventoriesRequest): Promise<google.longrunning.Operation>;

                    /**
                     * Calls RemoveLocalInventories.
                     * @param request RemoveLocalInventoriesRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public removeLocalInventories(request: google.cloud.retail.v2.IRemoveLocalInventoriesRequest, callback: google.cloud.retail.v2.ProductService.RemoveLocalInventoriesCallback): void;

                    /**
                     * Calls RemoveLocalInventories.
                     * @param request RemoveLocalInventoriesRequest message or plain object
                     * @returns Promise
                     */
                    public removeLocalInventories(request: google.cloud.retail.v2.IRemoveLocalInventoriesRequest): Promise<google.longrunning.Operation>;
                }

                namespace ProductService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.ProductService|createProduct}.
                     * @param error Error, if any
                     * @param [response] Product
                     */
                    type CreateProductCallback = (error: (Error|null), response?: google.cloud.retail.v2.Product) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.ProductService|getProduct}.
                     * @param error Error, if any
                     * @param [response] Product
                     */
                    type GetProductCallback = (error: (Error|null), response?: google.cloud.retail.v2.Product) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.ProductService|listProducts}.
                     * @param error Error, if any
                     * @param [response] ListProductsResponse
                     */
                    type ListProductsCallback = (error: (Error|null), response?: google.cloud.retail.v2.ListProductsResponse) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.ProductService|updateProduct}.
                     * @param error Error, if any
                     * @param [response] Product
                     */
                    type UpdateProductCallback = (error: (Error|null), response?: google.cloud.retail.v2.Product) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.ProductService|deleteProduct}.
                     * @param error Error, if any
                     * @param [response] Empty
                     */
                    type DeleteProductCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.ProductService|purgeProducts}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type PurgeProductsCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.ProductService|importProducts}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type ImportProductsCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.ProductService|setInventory}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type SetInventoryCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.ProductService|addFulfillmentPlaces}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type AddFulfillmentPlacesCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.ProductService|removeFulfillmentPlaces}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type RemoveFulfillmentPlacesCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.ProductService|addLocalInventories}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type AddLocalInventoriesCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.ProductService|removeLocalInventories}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type RemoveLocalInventoriesCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;
                }

                /** Properties of a CreateProductRequest. */
                interface ICreateProductRequest {

                    /** CreateProductRequest parent */
                    parent?: (string|null);

                    /** CreateProductRequest product */
                    product?: (google.cloud.retail.v2.IProduct|null);

                    /** CreateProductRequest productId */
                    productId?: (string|null);
                }

                /** Represents a CreateProductRequest. */
                class CreateProductRequest implements ICreateProductRequest {

                    /**
                     * Constructs a new CreateProductRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.ICreateProductRequest);

                    /** CreateProductRequest parent. */
                    public parent: string;

                    /** CreateProductRequest product. */
                    public product?: (google.cloud.retail.v2.IProduct|null);

                    /** CreateProductRequest productId. */
                    public productId: string;

                    /**
                     * Creates a new CreateProductRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CreateProductRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.ICreateProductRequest): google.cloud.retail.v2.CreateProductRequest;

                    /**
                     * Encodes the specified CreateProductRequest message. Does not implicitly {@link google.cloud.retail.v2.CreateProductRequest.verify|verify} messages.
                     * @param message CreateProductRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.ICreateProductRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CreateProductRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2.CreateProductRequest.verify|verify} messages.
                     * @param message CreateProductRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.ICreateProductRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CreateProductRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CreateProductRequest
                     * @throws {Error} If the payload is not 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.retail.v2.CreateProductRequest;

                    /**
                     * Decodes a CreateProductRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CreateProductRequest
                     * @throws {Error} If the payload 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.retail.v2.CreateProductRequest;

                    /**
                     * Verifies a CreateProductRequest message.
                     * @param message Plain 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 CreateProductRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CreateProductRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.CreateProductRequest;

                    /**
                     * Creates a plain object from a CreateProductRequest message. Also converts values to other types if specified.
                     * @param message CreateProductRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.CreateProductRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CreateProductRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CreateProductRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetProductRequest. */
                interface IGetProductRequest {

                    /** GetProductRequest name */
                    name?: (string|null);
                }

                /** Represents a GetProductRequest. */
                class GetProductRequest implements IGetProductRequest {

                    /**
                     * Constructs a new GetProductRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IGetProductRequest);

                    /** GetProductRequest name. */
                    public name: string;

                    /**
                     * Creates a new GetProductRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetProductRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IGetProductRequest): google.cloud.retail.v2.GetProductRequest;

                    /**
                     * Encodes the specified GetProductRequest message. Does not implicitly {@link google.cloud.retail.v2.GetProductRequest.verify|verify} messages.
                     * @param message GetProductRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IGetProductRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetProductRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2.GetProductRequest.verify|verify} messages.
                     * @param message GetProductRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IGetProductRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetProductRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetProductRequest
                     * @throws {Error} If the payload is not 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.retail.v2.GetProductRequest;

                    /**
                     * Decodes a GetProductRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetProductRequest
                     * @throws {Error} If the payload 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.retail.v2.GetProductRequest;

                    /**
                     * Verifies a GetProductRequest message.
                     * @param message Plain 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 GetProductRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetProductRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.GetProductRequest;

                    /**
                     * Creates a plain object from a GetProductRequest message. Also converts values to other types if specified.
                     * @param message GetProductRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.GetProductRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetProductRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetProductRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateProductRequest. */
                interface IUpdateProductRequest {

                    /** UpdateProductRequest product */
                    product?: (google.cloud.retail.v2.IProduct|null);

                    /** UpdateProductRequest updateMask */
                    updateMask?: (google.protobuf.IFieldMask|null);

                    /** UpdateProductRequest allowMissing */
                    allowMissing?: (boolean|null);
                }

                /** Represents an UpdateProductRequest. */
                class UpdateProductRequest implements IUpdateProductRequest {

                    /**
                     * Constructs a new UpdateProductRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IUpdateProductRequest);

                    /** UpdateProductRequest product. */
                    public product?: (google.cloud.retail.v2.IProduct|null);

                    /** UpdateProductRequest updateMask. */
                    public updateMask?: (google.protobuf.IFieldMask|null);

                    /** UpdateProductRequest allowMissing. */
                    public allowMissing: boolean;

                    /**
                     * Creates a new UpdateProductRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateProductRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IUpdateProductRequest): google.cloud.retail.v2.UpdateProductRequest;

                    /**
                     * Encodes the specified UpdateProductRequest message. Does not implicitly {@link google.cloud.retail.v2.UpdateProductRequest.verify|verify} messages.
                     * @param message UpdateProductRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IUpdateProductRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateProductRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2.UpdateProductRequest.verify|verify} messages.
                     * @param message UpdateProductRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IUpdateProductRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateProductRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateProductRequest
                     * @throws {Error} If the payload is not 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.retail.v2.UpdateProductRequest;

                    /**
                     * Decodes an UpdateProductRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateProductRequest
                     * @throws {Error} If the payload 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.retail.v2.UpdateProductRequest;

                    /**
                     * Verifies an UpdateProductRequest message.
                     * @param message Plain 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 UpdateProductRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateProductRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.UpdateProductRequest;

                    /**
                     * Creates a plain object from an UpdateProductRequest message. Also converts values to other types if specified.
                     * @param message UpdateProductRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.UpdateProductRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateProductRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateProductRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeleteProductRequest. */
                interface IDeleteProductRequest {

                    /** DeleteProductRequest name */
                    name?: (string|null);
                }

                /** Represents a DeleteProductRequest. */
                class DeleteProductRequest implements IDeleteProductRequest {

                    /**
                     * Constructs a new DeleteProductRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IDeleteProductRequest);

                    /** DeleteProductRequest name. */
                    public name: string;

                    /**
                     * Creates a new DeleteProductRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeleteProductRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IDeleteProductRequest): google.cloud.retail.v2.DeleteProductRequest;

                    /**
                     * Encodes the specified DeleteProductRequest message. Does not implicitly {@link google.cloud.retail.v2.DeleteProductRequest.verify|verify} messages.
                     * @param message DeleteProductRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IDeleteProductRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeleteProductRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2.DeleteProductRequest.verify|verify} messages.
                     * @param message DeleteProductRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IDeleteProductRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeleteProductRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeleteProductRequest
                     * @throws {Error} If the payload is not 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.retail.v2.DeleteProductRequest;

                    /**
                     * Decodes a DeleteProductRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeleteProductRequest
                     * @throws {Error} If the payload 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.retail.v2.DeleteProductRequest;

                    /**
                     * Verifies a DeleteProductRequest message.
                     * @param message Plain 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 DeleteProductRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeleteProductRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.DeleteProductRequest;

                    /**
                     * Creates a plain object from a DeleteProductRequest message. Also converts values to other types if specified.
                     * @param message DeleteProductRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.DeleteProductRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeleteProductRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeleteProductRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListProductsRequest. */
                interface IListProductsRequest {

                    /** ListProductsRequest parent */
                    parent?: (string|null);

                    /** ListProductsRequest pageSize */
                    pageSize?: (number|null);

                    /** ListProductsRequest pageToken */
                    pageToken?: (string|null);

                    /** ListProductsRequest filter */
                    filter?: (string|null);

                    /** ListProductsRequest readMask */
                    readMask?: (google.protobuf.IFieldMask|null);
                }

                /** Represents a ListProductsRequest. */
                class ListProductsRequest implements IListProductsRequest {

                    /**
                     * Constructs a new ListProductsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IListProductsRequest);

                    /** ListProductsRequest parent. */
                    public parent: string;

                    /** ListProductsRequest pageSize. */
                    public pageSize: number;

                    /** ListProductsRequest pageToken. */
                    public pageToken: string;

                    /** ListProductsRequest filter. */
                    public filter: string;

                    /** ListProductsRequest readMask. */
                    public readMask?: (google.protobuf.IFieldMask|null);

                    /**
                     * Creates a new ListProductsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListProductsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IListProductsRequest): google.cloud.retail.v2.ListProductsRequest;

                    /**
                     * Encodes the specified ListProductsRequest message. Does not implicitly {@link google.cloud.retail.v2.ListProductsRequest.verify|verify} messages.
                     * @param message ListProductsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IListProductsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListProductsRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2.ListProductsRequest.verify|verify} messages.
                     * @param message ListProductsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IListProductsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListProductsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListProductsRequest
                     * @throws {Error} If the payload is not 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.retail.v2.ListProductsRequest;

                    /**
                     * Decodes a ListProductsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListProductsRequest
                     * @throws {Error} If the payload 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.retail.v2.ListProductsRequest;

                    /**
                     * Verifies a ListProductsRequest message.
                     * @param message Plain 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 ListProductsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListProductsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ListProductsRequest;

                    /**
                     * Creates a plain object from a ListProductsRequest message. Also converts values to other types if specified.
                     * @param message ListProductsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.ListProductsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListProductsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListProductsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListProductsResponse. */
                interface IListProductsResponse {

                    /** ListProductsResponse products */
                    products?: (google.cloud.retail.v2.IProduct[]|null);

                    /** ListProductsResponse nextPageToken */
                    nextPageToken?: (string|null);
                }

                /** Represents a ListProductsResponse. */
                class ListProductsResponse implements IListProductsResponse {

                    /**
                     * Constructs a new ListProductsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IListProductsResponse);

                    /** ListProductsResponse products. */
                    public products: google.cloud.retail.v2.IProduct[];

                    /** ListProductsResponse nextPageToken. */
                    public nextPageToken: string;

                    /**
                     * Creates a new ListProductsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListProductsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IListProductsResponse): google.cloud.retail.v2.ListProductsResponse;

                    /**
                     * Encodes the specified ListProductsResponse message. Does not implicitly {@link google.cloud.retail.v2.ListProductsResponse.verify|verify} messages.
                     * @param message ListProductsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IListProductsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListProductsResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2.ListProductsResponse.verify|verify} messages.
                     * @param message ListProductsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IListProductsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListProductsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListProductsResponse
                     * @throws {Error} If the payload is not 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.retail.v2.ListProductsResponse;

                    /**
                     * Decodes a ListProductsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListProductsResponse
                     * @throws {Error} If the payload 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.retail.v2.ListProductsResponse;

                    /**
                     * Verifies a ListProductsResponse message.
                     * @param message Plain 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 ListProductsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListProductsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ListProductsResponse;

                    /**
                     * Creates a plain object from a ListProductsResponse message. Also converts values to other types if specified.
                     * @param message ListProductsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.ListProductsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListProductsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListProductsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SetInventoryRequest. */
                interface ISetInventoryRequest {

                    /** SetInventoryRequest inventory */
                    inventory?: (google.cloud.retail.v2.IProduct|null);

                    /** SetInventoryRequest setMask */
                    setMask?: (google.protobuf.IFieldMask|null);

                    /** SetInventoryRequest setTime */
                    setTime?: (google.protobuf.ITimestamp|null);

                    /** SetInventoryRequest allowMissing */
                    allowMissing?: (boolean|null);
                }

                /** Represents a SetInventoryRequest. */
                class SetInventoryRequest implements ISetInventoryRequest {

                    /**
                     * Constructs a new SetInventoryRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.ISetInventoryRequest);

                    /** SetInventoryRequest inventory. */
                    public inventory?: (google.cloud.retail.v2.IProduct|null);

                    /** SetInventoryRequest setMask. */
                    public setMask?: (google.protobuf.IFieldMask|null);

                    /** SetInventoryRequest setTime. */
                    public setTime?: (google.protobuf.ITimestamp|null);

                    /** SetInventoryRequest allowMissing. */
                    public allowMissing: boolean;

                    /**
                     * Creates a new SetInventoryRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SetInventoryRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.ISetInventoryRequest): google.cloud.retail.v2.SetInventoryRequest;

                    /**
                     * Encodes the specified SetInventoryRequest message. Does not implicitly {@link google.cloud.retail.v2.SetInventoryRequest.verify|verify} messages.
                     * @param message SetInventoryRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.ISetInventoryRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SetInventoryRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2.SetInventoryRequest.verify|verify} messages.
                     * @param message SetInventoryRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.ISetInventoryRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SetInventoryRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SetInventoryRequest
                     * @throws {Error} If the payload is not 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.retail.v2.SetInventoryRequest;

                    /**
                     * Decodes a SetInventoryRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SetInventoryRequest
                     * @throws {Error} If the payload 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.retail.v2.SetInventoryRequest;

                    /**
                     * Verifies a SetInventoryRequest message.
                     * @param message Plain 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 SetInventoryRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SetInventoryRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.SetInventoryRequest;

                    /**
                     * Creates a plain object from a SetInventoryRequest message. Also converts values to other types if specified.
                     * @param message SetInventoryRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.SetInventoryRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SetInventoryRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SetInventoryRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SetInventoryMetadata. */
                interface ISetInventoryMetadata {
                }

                /** Represents a SetInventoryMetadata. */
                class SetInventoryMetadata implements ISetInventoryMetadata {

                    /**
                     * Constructs a new SetInventoryMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.ISetInventoryMetadata);

                    /**
                     * Creates a new SetInventoryMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SetInventoryMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2.ISetInventoryMetadata): google.cloud.retail.v2.SetInventoryMetadata;

                    /**
                     * Encodes the specified SetInventoryMetadata message. Does not implicitly {@link google.cloud.retail.v2.SetInventoryMetadata.verify|verify} messages.
                     * @param message SetInventoryMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.ISetInventoryMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SetInventoryMetadata message, length delimited. Does not implicitly {@link google.cloud.retail.v2.SetInventoryMetadata.verify|verify} messages.
                     * @param message SetInventoryMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.ISetInventoryMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SetInventoryMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SetInventoryMetadata
                     * @throws {Error} If the payload is not 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.retail.v2.SetInventoryMetadata;

                    /**
                     * Decodes a SetInventoryMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SetInventoryMetadata
                     * @throws {Error} If the payload 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.retail.v2.SetInventoryMetadata;

                    /**
                     * Verifies a SetInventoryMetadata message.
                     * @param message Plain 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 SetInventoryMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SetInventoryMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.SetInventoryMetadata;

                    /**
                     * Creates a plain object from a SetInventoryMetadata message. Also converts values to other types if specified.
                     * @param message SetInventoryMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.SetInventoryMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SetInventoryMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SetInventoryMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SetInventoryResponse. */
                interface ISetInventoryResponse {
                }

                /** Represents a SetInventoryResponse. */
                class SetInventoryResponse implements ISetInventoryResponse {

                    /**
                     * Constructs a new SetInventoryResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.ISetInventoryResponse);

                    /**
                     * Creates a new SetInventoryResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SetInventoryResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2.ISetInventoryResponse): google.cloud.retail.v2.SetInventoryResponse;

                    /**
                     * Encodes the specified SetInventoryResponse message. Does not implicitly {@link google.cloud.retail.v2.SetInventoryResponse.verify|verify} messages.
                     * @param message SetInventoryResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.ISetInventoryResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SetInventoryResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2.SetInventoryResponse.verify|verify} messages.
                     * @param message SetInventoryResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.ISetInventoryResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SetInventoryResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SetInventoryResponse
                     * @throws {Error} If the payload is not 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.retail.v2.SetInventoryResponse;

                    /**
                     * Decodes a SetInventoryResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SetInventoryResponse
                     * @throws {Error} If the payload 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.retail.v2.SetInventoryResponse;

                    /**
                     * Verifies a SetInventoryResponse message.
                     * @param message Plain 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 SetInventoryResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SetInventoryResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.SetInventoryResponse;

                    /**
                     * Creates a plain object from a SetInventoryResponse message. Also converts values to other types if specified.
                     * @param message SetInventoryResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.SetInventoryResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SetInventoryResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SetInventoryResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an AddFulfillmentPlacesRequest. */
                interface IAddFulfillmentPlacesRequest {

                    /** AddFulfillmentPlacesRequest product */
                    product?: (string|null);

                    /** AddFulfillmentPlacesRequest type */
                    type?: (string|null);

                    /** AddFulfillmentPlacesRequest placeIds */
                    placeIds?: (string[]|null);

                    /** AddFulfillmentPlacesRequest addTime */
                    addTime?: (google.protobuf.ITimestamp|null);

                    /** AddFulfillmentPlacesRequest allowMissing */
                    allowMissing?: (boolean|null);
                }

                /** Represents an AddFulfillmentPlacesRequest. */
                class AddFulfillmentPlacesRequest implements IAddFulfillmentPlacesRequest {

                    /**
                     * Constructs a new AddFulfillmentPlacesRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IAddFulfillmentPlacesRequest);

                    /** AddFulfillmentPlacesRequest product. */
                    public product: string;

                    /** AddFulfillmentPlacesRequest type. */
                    public type: string;

                    /** AddFulfillmentPlacesRequest placeIds. */
                    public placeIds: string[];

                    /** AddFulfillmentPlacesRequest addTime. */
                    public addTime?: (google.protobuf.ITimestamp|null);

                    /** AddFulfillmentPlacesRequest allowMissing. */
                    public allowMissing: boolean;

                    /**
                     * Creates a new AddFulfillmentPlacesRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns AddFulfillmentPlacesRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IAddFulfillmentPlacesRequest): google.cloud.retail.v2.AddFulfillmentPlacesRequest;

                    /**
                     * Encodes the specified AddFulfillmentPlacesRequest message. Does not implicitly {@link google.cloud.retail.v2.AddFulfillmentPlacesRequest.verify|verify} messages.
                     * @param message AddFulfillmentPlacesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IAddFulfillmentPlacesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified AddFulfillmentPlacesRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2.AddFulfillmentPlacesRequest.verify|verify} messages.
                     * @param message AddFulfillmentPlacesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IAddFulfillmentPlacesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an AddFulfillmentPlacesRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns AddFulfillmentPlacesRequest
                     * @throws {Error} If the payload is not 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.retail.v2.AddFulfillmentPlacesRequest;

                    /**
                     * Decodes an AddFulfillmentPlacesRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns AddFulfillmentPlacesRequest
                     * @throws {Error} If the payload 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.retail.v2.AddFulfillmentPlacesRequest;

                    /**
                     * Verifies an AddFulfillmentPlacesRequest message.
                     * @param message Plain 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 AddFulfillmentPlacesRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns AddFulfillmentPlacesRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.AddFulfillmentPlacesRequest;

                    /**
                     * Creates a plain object from an AddFulfillmentPlacesRequest message. Also converts values to other types if specified.
                     * @param message AddFulfillmentPlacesRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.AddFulfillmentPlacesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this AddFulfillmentPlacesRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for AddFulfillmentPlacesRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an AddFulfillmentPlacesMetadata. */
                interface IAddFulfillmentPlacesMetadata {
                }

                /** Represents an AddFulfillmentPlacesMetadata. */
                class AddFulfillmentPlacesMetadata implements IAddFulfillmentPlacesMetadata {

                    /**
                     * Constructs a new AddFulfillmentPlacesMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IAddFulfillmentPlacesMetadata);

                    /**
                     * Creates a new AddFulfillmentPlacesMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns AddFulfillmentPlacesMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IAddFulfillmentPlacesMetadata): google.cloud.retail.v2.AddFulfillmentPlacesMetadata;

                    /**
                     * Encodes the specified AddFulfillmentPlacesMetadata message. Does not implicitly {@link google.cloud.retail.v2.AddFulfillmentPlacesMetadata.verify|verify} messages.
                     * @param message AddFulfillmentPlacesMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IAddFulfillmentPlacesMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified AddFulfillmentPlacesMetadata message, length delimited. Does not implicitly {@link google.cloud.retail.v2.AddFulfillmentPlacesMetadata.verify|verify} messages.
                     * @param message AddFulfillmentPlacesMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IAddFulfillmentPlacesMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an AddFulfillmentPlacesMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns AddFulfillmentPlacesMetadata
                     * @throws {Error} If the payload is not 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.retail.v2.AddFulfillmentPlacesMetadata;

                    /**
                     * Decodes an AddFulfillmentPlacesMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns AddFulfillmentPlacesMetadata
                     * @throws {Error} If the payload 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.retail.v2.AddFulfillmentPlacesMetadata;

                    /**
                     * Verifies an AddFulfillmentPlacesMetadata message.
                     * @param message Plain 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 AddFulfillmentPlacesMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns AddFulfillmentPlacesMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.AddFulfillmentPlacesMetadata;

                    /**
                     * Creates a plain object from an AddFulfillmentPlacesMetadata message. Also converts values to other types if specified.
                     * @param message AddFulfillmentPlacesMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.AddFulfillmentPlacesMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this AddFulfillmentPlacesMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for AddFulfillmentPlacesMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an AddFulfillmentPlacesResponse. */
                interface IAddFulfillmentPlacesResponse {
                }

                /** Represents an AddFulfillmentPlacesResponse. */
                class AddFulfillmentPlacesResponse implements IAddFulfillmentPlacesResponse {

                    /**
                     * Constructs a new AddFulfillmentPlacesResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IAddFulfillmentPlacesResponse);

                    /**
                     * Creates a new AddFulfillmentPlacesResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns AddFulfillmentPlacesResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IAddFulfillmentPlacesResponse): google.cloud.retail.v2.AddFulfillmentPlacesResponse;

                    /**
                     * Encodes the specified AddFulfillmentPlacesResponse message. Does not implicitly {@link google.cloud.retail.v2.AddFulfillmentPlacesResponse.verify|verify} messages.
                     * @param message AddFulfillmentPlacesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IAddFulfillmentPlacesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified AddFulfillmentPlacesResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2.AddFulfillmentPlacesResponse.verify|verify} messages.
                     * @param message AddFulfillmentPlacesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IAddFulfillmentPlacesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an AddFulfillmentPlacesResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns AddFulfillmentPlacesResponse
                     * @throws {Error} If the payload is not 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.retail.v2.AddFulfillmentPlacesResponse;

                    /**
                     * Decodes an AddFulfillmentPlacesResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns AddFulfillmentPlacesResponse
                     * @throws {Error} If the payload 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.retail.v2.AddFulfillmentPlacesResponse;

                    /**
                     * Verifies an AddFulfillmentPlacesResponse message.
                     * @param message Plain 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 AddFulfillmentPlacesResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns AddFulfillmentPlacesResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.AddFulfillmentPlacesResponse;

                    /**
                     * Creates a plain object from an AddFulfillmentPlacesResponse message. Also converts values to other types if specified.
                     * @param message AddFulfillmentPlacesResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.AddFulfillmentPlacesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this AddFulfillmentPlacesResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for AddFulfillmentPlacesResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an AddLocalInventoriesRequest. */
                interface IAddLocalInventoriesRequest {

                    /** AddLocalInventoriesRequest product */
                    product?: (string|null);

                    /** AddLocalInventoriesRequest localInventories */
                    localInventories?: (google.cloud.retail.v2.ILocalInventory[]|null);

                    /** AddLocalInventoriesRequest addMask */
                    addMask?: (google.protobuf.IFieldMask|null);

                    /** AddLocalInventoriesRequest addTime */
                    addTime?: (google.protobuf.ITimestamp|null);

                    /** AddLocalInventoriesRequest allowMissing */
                    allowMissing?: (boolean|null);
                }

                /** Represents an AddLocalInventoriesRequest. */
                class AddLocalInventoriesRequest implements IAddLocalInventoriesRequest {

                    /**
                     * Constructs a new AddLocalInventoriesRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IAddLocalInventoriesRequest);

                    /** AddLocalInventoriesRequest product. */
                    public product: string;

                    /** AddLocalInventoriesRequest localInventories. */
                    public localInventories: google.cloud.retail.v2.ILocalInventory[];

                    /** AddLocalInventoriesRequest addMask. */
                    public addMask?: (google.protobuf.IFieldMask|null);

                    /** AddLocalInventoriesRequest addTime. */
                    public addTime?: (google.protobuf.ITimestamp|null);

                    /** AddLocalInventoriesRequest allowMissing. */
                    public allowMissing: boolean;

                    /**
                     * Creates a new AddLocalInventoriesRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns AddLocalInventoriesRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IAddLocalInventoriesRequest): google.cloud.retail.v2.AddLocalInventoriesRequest;

                    /**
                     * Encodes the specified AddLocalInventoriesRequest message. Does not implicitly {@link google.cloud.retail.v2.AddLocalInventoriesRequest.verify|verify} messages.
                     * @param message AddLocalInventoriesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IAddLocalInventoriesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified AddLocalInventoriesRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2.AddLocalInventoriesRequest.verify|verify} messages.
                     * @param message AddLocalInventoriesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IAddLocalInventoriesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an AddLocalInventoriesRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns AddLocalInventoriesRequest
                     * @throws {Error} If the payload is not 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.retail.v2.AddLocalInventoriesRequest;

                    /**
                     * Decodes an AddLocalInventoriesRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns AddLocalInventoriesRequest
                     * @throws {Error} If the payload 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.retail.v2.AddLocalInventoriesRequest;

                    /**
                     * Verifies an AddLocalInventoriesRequest message.
                     * @param message Plain 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 AddLocalInventoriesRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns AddLocalInventoriesRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.AddLocalInventoriesRequest;

                    /**
                     * Creates a plain object from an AddLocalInventoriesRequest message. Also converts values to other types if specified.
                     * @param message AddLocalInventoriesRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.AddLocalInventoriesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this AddLocalInventoriesRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for AddLocalInventoriesRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an AddLocalInventoriesMetadata. */
                interface IAddLocalInventoriesMetadata {
                }

                /** Represents an AddLocalInventoriesMetadata. */
                class AddLocalInventoriesMetadata implements IAddLocalInventoriesMetadata {

                    /**
                     * Constructs a new AddLocalInventoriesMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IAddLocalInventoriesMetadata);

                    /**
                     * Creates a new AddLocalInventoriesMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns AddLocalInventoriesMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IAddLocalInventoriesMetadata): google.cloud.retail.v2.AddLocalInventoriesMetadata;

                    /**
                     * Encodes the specified AddLocalInventoriesMetadata message. Does not implicitly {@link google.cloud.retail.v2.AddLocalInventoriesMetadata.verify|verify} messages.
                     * @param message AddLocalInventoriesMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IAddLocalInventoriesMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified AddLocalInventoriesMetadata message, length delimited. Does not implicitly {@link google.cloud.retail.v2.AddLocalInventoriesMetadata.verify|verify} messages.
                     * @param message AddLocalInventoriesMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IAddLocalInventoriesMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an AddLocalInventoriesMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns AddLocalInventoriesMetadata
                     * @throws {Error} If the payload is not 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.retail.v2.AddLocalInventoriesMetadata;

                    /**
                     * Decodes an AddLocalInventoriesMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns AddLocalInventoriesMetadata
                     * @throws {Error} If the payload 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.retail.v2.AddLocalInventoriesMetadata;

                    /**
                     * Verifies an AddLocalInventoriesMetadata message.
                     * @param message Plain 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 AddLocalInventoriesMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns AddLocalInventoriesMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.AddLocalInventoriesMetadata;

                    /**
                     * Creates a plain object from an AddLocalInventoriesMetadata message. Also converts values to other types if specified.
                     * @param message AddLocalInventoriesMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.AddLocalInventoriesMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this AddLocalInventoriesMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for AddLocalInventoriesMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an AddLocalInventoriesResponse. */
                interface IAddLocalInventoriesResponse {
                }

                /** Represents an AddLocalInventoriesResponse. */
                class AddLocalInventoriesResponse implements IAddLocalInventoriesResponse {

                    /**
                     * Constructs a new AddLocalInventoriesResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IAddLocalInventoriesResponse);

                    /**
                     * Creates a new AddLocalInventoriesResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns AddLocalInventoriesResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IAddLocalInventoriesResponse): google.cloud.retail.v2.AddLocalInventoriesResponse;

                    /**
                     * Encodes the specified AddLocalInventoriesResponse message. Does not implicitly {@link google.cloud.retail.v2.AddLocalInventoriesResponse.verify|verify} messages.
                     * @param message AddLocalInventoriesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IAddLocalInventoriesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified AddLocalInventoriesResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2.AddLocalInventoriesResponse.verify|verify} messages.
                     * @param message AddLocalInventoriesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IAddLocalInventoriesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an AddLocalInventoriesResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns AddLocalInventoriesResponse
                     * @throws {Error} If the payload is not 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.retail.v2.AddLocalInventoriesResponse;

                    /**
                     * Decodes an AddLocalInventoriesResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns AddLocalInventoriesResponse
                     * @throws {Error} If the payload 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.retail.v2.AddLocalInventoriesResponse;

                    /**
                     * Verifies an AddLocalInventoriesResponse message.
                     * @param message Plain 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 AddLocalInventoriesResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns AddLocalInventoriesResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.AddLocalInventoriesResponse;

                    /**
                     * Creates a plain object from an AddLocalInventoriesResponse message. Also converts values to other types if specified.
                     * @param message AddLocalInventoriesResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.AddLocalInventoriesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this AddLocalInventoriesResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for AddLocalInventoriesResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RemoveLocalInventoriesRequest. */
                interface IRemoveLocalInventoriesRequest {

                    /** RemoveLocalInventoriesRequest product */
                    product?: (string|null);

                    /** RemoveLocalInventoriesRequest placeIds */
                    placeIds?: (string[]|null);

                    /** RemoveLocalInventoriesRequest removeTime */
                    removeTime?: (google.protobuf.ITimestamp|null);

                    /** RemoveLocalInventoriesRequest allowMissing */
                    allowMissing?: (boolean|null);
                }

                /** Represents a RemoveLocalInventoriesRequest. */
                class RemoveLocalInventoriesRequest implements IRemoveLocalInventoriesRequest {

                    /**
                     * Constructs a new RemoveLocalInventoriesRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IRemoveLocalInventoriesRequest);

                    /** RemoveLocalInventoriesRequest product. */
                    public product: string;

                    /** RemoveLocalInventoriesRequest placeIds. */
                    public placeIds: string[];

                    /** RemoveLocalInventoriesRequest removeTime. */
                    public removeTime?: (google.protobuf.ITimestamp|null);

                    /** RemoveLocalInventoriesRequest allowMissing. */
                    public allowMissing: boolean;

                    /**
                     * Creates a new RemoveLocalInventoriesRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RemoveLocalInventoriesRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IRemoveLocalInventoriesRequest): google.cloud.retail.v2.RemoveLocalInventoriesRequest;

                    /**
                     * Encodes the specified RemoveLocalInventoriesRequest message. Does not implicitly {@link google.cloud.retail.v2.RemoveLocalInventoriesRequest.verify|verify} messages.
                     * @param message RemoveLocalInventoriesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IRemoveLocalInventoriesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RemoveLocalInventoriesRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2.RemoveLocalInventoriesRequest.verify|verify} messages.
                     * @param message RemoveLocalInventoriesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IRemoveLocalInventoriesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RemoveLocalInventoriesRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RemoveLocalInventoriesRequest
                     * @throws {Error} If the payload is not 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.retail.v2.RemoveLocalInventoriesRequest;

                    /**
                     * Decodes a RemoveLocalInventoriesRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RemoveLocalInventoriesRequest
                     * @throws {Error} If the payload 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.retail.v2.RemoveLocalInventoriesRequest;

                    /**
                     * Verifies a RemoveLocalInventoriesRequest message.
                     * @param message Plain 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 RemoveLocalInventoriesRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RemoveLocalInventoriesRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.RemoveLocalInventoriesRequest;

                    /**
                     * Creates a plain object from a RemoveLocalInventoriesRequest message. Also converts values to other types if specified.
                     * @param message RemoveLocalInventoriesRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.RemoveLocalInventoriesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RemoveLocalInventoriesRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RemoveLocalInventoriesRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RemoveLocalInventoriesMetadata. */
                interface IRemoveLocalInventoriesMetadata {
                }

                /** Represents a RemoveLocalInventoriesMetadata. */
                class RemoveLocalInventoriesMetadata implements IRemoveLocalInventoriesMetadata {

                    /**
                     * Constructs a new RemoveLocalInventoriesMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IRemoveLocalInventoriesMetadata);

                    /**
                     * Creates a new RemoveLocalInventoriesMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RemoveLocalInventoriesMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IRemoveLocalInventoriesMetadata): google.cloud.retail.v2.RemoveLocalInventoriesMetadata;

                    /**
                     * Encodes the specified RemoveLocalInventoriesMetadata message. Does not implicitly {@link google.cloud.retail.v2.RemoveLocalInventoriesMetadata.verify|verify} messages.
                     * @param message RemoveLocalInventoriesMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IRemoveLocalInventoriesMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RemoveLocalInventoriesMetadata message, length delimited. Does not implicitly {@link google.cloud.retail.v2.RemoveLocalInventoriesMetadata.verify|verify} messages.
                     * @param message RemoveLocalInventoriesMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IRemoveLocalInventoriesMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RemoveLocalInventoriesMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RemoveLocalInventoriesMetadata
                     * @throws {Error} If the payload is not 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.retail.v2.RemoveLocalInventoriesMetadata;

                    /**
                     * Decodes a RemoveLocalInventoriesMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RemoveLocalInventoriesMetadata
                     * @throws {Error} If the payload 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.retail.v2.RemoveLocalInventoriesMetadata;

                    /**
                     * Verifies a RemoveLocalInventoriesMetadata message.
                     * @param message Plain 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 RemoveLocalInventoriesMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RemoveLocalInventoriesMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.RemoveLocalInventoriesMetadata;

                    /**
                     * Creates a plain object from a RemoveLocalInventoriesMetadata message. Also converts values to other types if specified.
                     * @param message RemoveLocalInventoriesMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.RemoveLocalInventoriesMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RemoveLocalInventoriesMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RemoveLocalInventoriesMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RemoveLocalInventoriesResponse. */
                interface IRemoveLocalInventoriesResponse {
                }

                /** Represents a RemoveLocalInventoriesResponse. */
                class RemoveLocalInventoriesResponse implements IRemoveLocalInventoriesResponse {

                    /**
                     * Constructs a new RemoveLocalInventoriesResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IRemoveLocalInventoriesResponse);

                    /**
                     * Creates a new RemoveLocalInventoriesResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RemoveLocalInventoriesResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IRemoveLocalInventoriesResponse): google.cloud.retail.v2.RemoveLocalInventoriesResponse;

                    /**
                     * Encodes the specified RemoveLocalInventoriesResponse message. Does not implicitly {@link google.cloud.retail.v2.RemoveLocalInventoriesResponse.verify|verify} messages.
                     * @param message RemoveLocalInventoriesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IRemoveLocalInventoriesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RemoveLocalInventoriesResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2.RemoveLocalInventoriesResponse.verify|verify} messages.
                     * @param message RemoveLocalInventoriesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IRemoveLocalInventoriesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RemoveLocalInventoriesResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RemoveLocalInventoriesResponse
                     * @throws {Error} If the payload is not 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.retail.v2.RemoveLocalInventoriesResponse;

                    /**
                     * Decodes a RemoveLocalInventoriesResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RemoveLocalInventoriesResponse
                     * @throws {Error} If the payload 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.retail.v2.RemoveLocalInventoriesResponse;

                    /**
                     * Verifies a RemoveLocalInventoriesResponse message.
                     * @param message Plain 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 RemoveLocalInventoriesResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RemoveLocalInventoriesResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.RemoveLocalInventoriesResponse;

                    /**
                     * Creates a plain object from a RemoveLocalInventoriesResponse message. Also converts values to other types if specified.
                     * @param message RemoveLocalInventoriesResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.RemoveLocalInventoriesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RemoveLocalInventoriesResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RemoveLocalInventoriesResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RemoveFulfillmentPlacesRequest. */
                interface IRemoveFulfillmentPlacesRequest {

                    /** RemoveFulfillmentPlacesRequest product */
                    product?: (string|null);

                    /** RemoveFulfillmentPlacesRequest type */
                    type?: (string|null);

                    /** RemoveFulfillmentPlacesRequest placeIds */
                    placeIds?: (string[]|null);

                    /** RemoveFulfillmentPlacesRequest removeTime */
                    removeTime?: (google.protobuf.ITimestamp|null);

                    /** RemoveFulfillmentPlacesRequest allowMissing */
                    allowMissing?: (boolean|null);
                }

                /** Represents a RemoveFulfillmentPlacesRequest. */
                class RemoveFulfillmentPlacesRequest implements IRemoveFulfillmentPlacesRequest {

                    /**
                     * Constructs a new RemoveFulfillmentPlacesRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IRemoveFulfillmentPlacesRequest);

                    /** RemoveFulfillmentPlacesRequest product. */
                    public product: string;

                    /** RemoveFulfillmentPlacesRequest type. */
                    public type: string;

                    /** RemoveFulfillmentPlacesRequest placeIds. */
                    public placeIds: string[];

                    /** RemoveFulfillmentPlacesRequest removeTime. */
                    public removeTime?: (google.protobuf.ITimestamp|null);

                    /** RemoveFulfillmentPlacesRequest allowMissing. */
                    public allowMissing: boolean;

                    /**
                     * Creates a new RemoveFulfillmentPlacesRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RemoveFulfillmentPlacesRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IRemoveFulfillmentPlacesRequest): google.cloud.retail.v2.RemoveFulfillmentPlacesRequest;

                    /**
                     * Encodes the specified RemoveFulfillmentPlacesRequest message. Does not implicitly {@link google.cloud.retail.v2.RemoveFulfillmentPlacesRequest.verify|verify} messages.
                     * @param message RemoveFulfillmentPlacesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IRemoveFulfillmentPlacesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RemoveFulfillmentPlacesRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2.RemoveFulfillmentPlacesRequest.verify|verify} messages.
                     * @param message RemoveFulfillmentPlacesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IRemoveFulfillmentPlacesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RemoveFulfillmentPlacesRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RemoveFulfillmentPlacesRequest
                     * @throws {Error} If the payload is not 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.retail.v2.RemoveFulfillmentPlacesRequest;

                    /**
                     * Decodes a RemoveFulfillmentPlacesRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RemoveFulfillmentPlacesRequest
                     * @throws {Error} If the payload 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.retail.v2.RemoveFulfillmentPlacesRequest;

                    /**
                     * Verifies a RemoveFulfillmentPlacesRequest message.
                     * @param message Plain 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 RemoveFulfillmentPlacesRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RemoveFulfillmentPlacesRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.RemoveFulfillmentPlacesRequest;

                    /**
                     * Creates a plain object from a RemoveFulfillmentPlacesRequest message. Also converts values to other types if specified.
                     * @param message RemoveFulfillmentPlacesRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.RemoveFulfillmentPlacesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RemoveFulfillmentPlacesRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RemoveFulfillmentPlacesRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RemoveFulfillmentPlacesMetadata. */
                interface IRemoveFulfillmentPlacesMetadata {
                }

                /** Represents a RemoveFulfillmentPlacesMetadata. */
                class RemoveFulfillmentPlacesMetadata implements IRemoveFulfillmentPlacesMetadata {

                    /**
                     * Constructs a new RemoveFulfillmentPlacesMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IRemoveFulfillmentPlacesMetadata);

                    /**
                     * Creates a new RemoveFulfillmentPlacesMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RemoveFulfillmentPlacesMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IRemoveFulfillmentPlacesMetadata): google.cloud.retail.v2.RemoveFulfillmentPlacesMetadata;

                    /**
                     * Encodes the specified RemoveFulfillmentPlacesMetadata message. Does not implicitly {@link google.cloud.retail.v2.RemoveFulfillmentPlacesMetadata.verify|verify} messages.
                     * @param message RemoveFulfillmentPlacesMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IRemoveFulfillmentPlacesMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RemoveFulfillmentPlacesMetadata message, length delimited. Does not implicitly {@link google.cloud.retail.v2.RemoveFulfillmentPlacesMetadata.verify|verify} messages.
                     * @param message RemoveFulfillmentPlacesMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IRemoveFulfillmentPlacesMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RemoveFulfillmentPlacesMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RemoveFulfillmentPlacesMetadata
                     * @throws {Error} If the payload is not 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.retail.v2.RemoveFulfillmentPlacesMetadata;

                    /**
                     * Decodes a RemoveFulfillmentPlacesMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RemoveFulfillmentPlacesMetadata
                     * @throws {Error} If the payload 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.retail.v2.RemoveFulfillmentPlacesMetadata;

                    /**
                     * Verifies a RemoveFulfillmentPlacesMetadata message.
                     * @param message Plain 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 RemoveFulfillmentPlacesMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RemoveFulfillmentPlacesMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.RemoveFulfillmentPlacesMetadata;

                    /**
                     * Creates a plain object from a RemoveFulfillmentPlacesMetadata message. Also converts values to other types if specified.
                     * @param message RemoveFulfillmentPlacesMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.RemoveFulfillmentPlacesMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RemoveFulfillmentPlacesMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RemoveFulfillmentPlacesMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RemoveFulfillmentPlacesResponse. */
                interface IRemoveFulfillmentPlacesResponse {
                }

                /** Represents a RemoveFulfillmentPlacesResponse. */
                class RemoveFulfillmentPlacesResponse implements IRemoveFulfillmentPlacesResponse {

                    /**
                     * Constructs a new RemoveFulfillmentPlacesResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IRemoveFulfillmentPlacesResponse);

                    /**
                     * Creates a new RemoveFulfillmentPlacesResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RemoveFulfillmentPlacesResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IRemoveFulfillmentPlacesResponse): google.cloud.retail.v2.RemoveFulfillmentPlacesResponse;

                    /**
                     * Encodes the specified RemoveFulfillmentPlacesResponse message. Does not implicitly {@link google.cloud.retail.v2.RemoveFulfillmentPlacesResponse.verify|verify} messages.
                     * @param message RemoveFulfillmentPlacesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IRemoveFulfillmentPlacesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RemoveFulfillmentPlacesResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2.RemoveFulfillmentPlacesResponse.verify|verify} messages.
                     * @param message RemoveFulfillmentPlacesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IRemoveFulfillmentPlacesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RemoveFulfillmentPlacesResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RemoveFulfillmentPlacesResponse
                     * @throws {Error} If the payload is not 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.retail.v2.RemoveFulfillmentPlacesResponse;

                    /**
                     * Decodes a RemoveFulfillmentPlacesResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RemoveFulfillmentPlacesResponse
                     * @throws {Error} If the payload 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.retail.v2.RemoveFulfillmentPlacesResponse;

                    /**
                     * Verifies a RemoveFulfillmentPlacesResponse message.
                     * @param message Plain 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 RemoveFulfillmentPlacesResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RemoveFulfillmentPlacesResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.RemoveFulfillmentPlacesResponse;

                    /**
                     * Creates a plain object from a RemoveFulfillmentPlacesResponse message. Also converts values to other types if specified.
                     * @param message RemoveFulfillmentPlacesResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.RemoveFulfillmentPlacesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RemoveFulfillmentPlacesResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RemoveFulfillmentPlacesResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PurgeMetadata. */
                interface IPurgeMetadata {
                }

                /** Represents a PurgeMetadata. */
                class PurgeMetadata implements IPurgeMetadata {

                    /**
                     * Constructs a new PurgeMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IPurgeMetadata);

                    /**
                     * Creates a new PurgeMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PurgeMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IPurgeMetadata): google.cloud.retail.v2.PurgeMetadata;

                    /**
                     * Encodes the specified PurgeMetadata message. Does not implicitly {@link google.cloud.retail.v2.PurgeMetadata.verify|verify} messages.
                     * @param message PurgeMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IPurgeMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PurgeMetadata message, length delimited. Does not implicitly {@link google.cloud.retail.v2.PurgeMetadata.verify|verify} messages.
                     * @param message PurgeMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IPurgeMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PurgeMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PurgeMetadata
                     * @throws {Error} If the payload is not 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.retail.v2.PurgeMetadata;

                    /**
                     * Decodes a PurgeMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PurgeMetadata
                     * @throws {Error} If the payload 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.retail.v2.PurgeMetadata;

                    /**
                     * Verifies a PurgeMetadata message.
                     * @param message Plain 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 PurgeMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PurgeMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.PurgeMetadata;

                    /**
                     * Creates a plain object from a PurgeMetadata message. Also converts values to other types if specified.
                     * @param message PurgeMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.PurgeMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PurgeMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PurgeMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PurgeProductsMetadata. */
                interface IPurgeProductsMetadata {

                    /** PurgeProductsMetadata createTime */
                    createTime?: (google.protobuf.ITimestamp|null);

                    /** PurgeProductsMetadata updateTime */
                    updateTime?: (google.protobuf.ITimestamp|null);

                    /** PurgeProductsMetadata successCount */
                    successCount?: (number|Long|string|null);

                    /** PurgeProductsMetadata failureCount */
                    failureCount?: (number|Long|string|null);
                }

                /** Represents a PurgeProductsMetadata. */
                class PurgeProductsMetadata implements IPurgeProductsMetadata {

                    /**
                     * Constructs a new PurgeProductsMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IPurgeProductsMetadata);

                    /** PurgeProductsMetadata createTime. */
                    public createTime?: (google.protobuf.ITimestamp|null);

                    /** PurgeProductsMetadata updateTime. */
                    public updateTime?: (google.protobuf.ITimestamp|null);

                    /** PurgeProductsMetadata successCount. */
                    public successCount: (number|Long|string);

                    /** PurgeProductsMetadata failureCount. */
                    public failureCount: (number|Long|string);

                    /**
                     * Creates a new PurgeProductsMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PurgeProductsMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IPurgeProductsMetadata): google.cloud.retail.v2.PurgeProductsMetadata;

                    /**
                     * Encodes the specified PurgeProductsMetadata message. Does not implicitly {@link google.cloud.retail.v2.PurgeProductsMetadata.verify|verify} messages.
                     * @param message PurgeProductsMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IPurgeProductsMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PurgeProductsMetadata message, length delimited. Does not implicitly {@link google.cloud.retail.v2.PurgeProductsMetadata.verify|verify} messages.
                     * @param message PurgeProductsMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IPurgeProductsMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PurgeProductsMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PurgeProductsMetadata
                     * @throws {Error} If the payload is not 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.retail.v2.PurgeProductsMetadata;

                    /**
                     * Decodes a PurgeProductsMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PurgeProductsMetadata
                     * @throws {Error} If the payload 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.retail.v2.PurgeProductsMetadata;

                    /**
                     * Verifies a PurgeProductsMetadata message.
                     * @param message Plain 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 PurgeProductsMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PurgeProductsMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.PurgeProductsMetadata;

                    /**
                     * Creates a plain object from a PurgeProductsMetadata message. Also converts values to other types if specified.
                     * @param message PurgeProductsMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.PurgeProductsMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PurgeProductsMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PurgeProductsMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PurgeProductsRequest. */
                interface IPurgeProductsRequest {

                    /** PurgeProductsRequest parent */
                    parent?: (string|null);

                    /** PurgeProductsRequest filter */
                    filter?: (string|null);

                    /** PurgeProductsRequest force */
                    force?: (boolean|null);
                }

                /** Represents a PurgeProductsRequest. */
                class PurgeProductsRequest implements IPurgeProductsRequest {

                    /**
                     * Constructs a new PurgeProductsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IPurgeProductsRequest);

                    /** PurgeProductsRequest parent. */
                    public parent: string;

                    /** PurgeProductsRequest filter. */
                    public filter: string;

                    /** PurgeProductsRequest force. */
                    public force: boolean;

                    /**
                     * Creates a new PurgeProductsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PurgeProductsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IPurgeProductsRequest): google.cloud.retail.v2.PurgeProductsRequest;

                    /**
                     * Encodes the specified PurgeProductsRequest message. Does not implicitly {@link google.cloud.retail.v2.PurgeProductsRequest.verify|verify} messages.
                     * @param message PurgeProductsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IPurgeProductsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PurgeProductsRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2.PurgeProductsRequest.verify|verify} messages.
                     * @param message PurgeProductsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IPurgeProductsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PurgeProductsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PurgeProductsRequest
                     * @throws {Error} If the payload is not 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.retail.v2.PurgeProductsRequest;

                    /**
                     * Decodes a PurgeProductsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PurgeProductsRequest
                     * @throws {Error} If the payload 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.retail.v2.PurgeProductsRequest;

                    /**
                     * Verifies a PurgeProductsRequest message.
                     * @param message Plain 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 PurgeProductsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PurgeProductsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.PurgeProductsRequest;

                    /**
                     * Creates a plain object from a PurgeProductsRequest message. Also converts values to other types if specified.
                     * @param message PurgeProductsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.PurgeProductsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PurgeProductsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PurgeProductsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PurgeProductsResponse. */
                interface IPurgeProductsResponse {

                    /** PurgeProductsResponse purgeCount */
                    purgeCount?: (number|Long|string|null);

                    /** PurgeProductsResponse purgeSample */
                    purgeSample?: (string[]|null);
                }

                /** Represents a PurgeProductsResponse. */
                class PurgeProductsResponse implements IPurgeProductsResponse {

                    /**
                     * Constructs a new PurgeProductsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IPurgeProductsResponse);

                    /** PurgeProductsResponse purgeCount. */
                    public purgeCount: (number|Long|string);

                    /** PurgeProductsResponse purgeSample. */
                    public purgeSample: string[];

                    /**
                     * Creates a new PurgeProductsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PurgeProductsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IPurgeProductsResponse): google.cloud.retail.v2.PurgeProductsResponse;

                    /**
                     * Encodes the specified PurgeProductsResponse message. Does not implicitly {@link google.cloud.retail.v2.PurgeProductsResponse.verify|verify} messages.
                     * @param message PurgeProductsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IPurgeProductsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PurgeProductsResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2.PurgeProductsResponse.verify|verify} messages.
                     * @param message PurgeProductsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IPurgeProductsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PurgeProductsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PurgeProductsResponse
                     * @throws {Error} If the payload is not 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.retail.v2.PurgeProductsResponse;

                    /**
                     * Decodes a PurgeProductsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PurgeProductsResponse
                     * @throws {Error} If the payload 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.retail.v2.PurgeProductsResponse;

                    /**
                     * Verifies a PurgeProductsResponse message.
                     * @param message Plain 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 PurgeProductsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PurgeProductsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.PurgeProductsResponse;

                    /**
                     * Creates a plain object from a PurgeProductsResponse message. Also converts values to other types if specified.
                     * @param message PurgeProductsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.PurgeProductsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PurgeProductsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PurgeProductsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PurgeUserEventsRequest. */
                interface IPurgeUserEventsRequest {

                    /** PurgeUserEventsRequest parent */
                    parent?: (string|null);

                    /** PurgeUserEventsRequest filter */
                    filter?: (string|null);

                    /** PurgeUserEventsRequest force */
                    force?: (boolean|null);
                }

                /** Represents a PurgeUserEventsRequest. */
                class PurgeUserEventsRequest implements IPurgeUserEventsRequest {

                    /**
                     * Constructs a new PurgeUserEventsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IPurgeUserEventsRequest);

                    /** PurgeUserEventsRequest parent. */
                    public parent: string;

                    /** PurgeUserEventsRequest filter. */
                    public filter: string;

                    /** PurgeUserEventsRequest force. */
                    public force: boolean;

                    /**
                     * Creates a new PurgeUserEventsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PurgeUserEventsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IPurgeUserEventsRequest): google.cloud.retail.v2.PurgeUserEventsRequest;

                    /**
                     * Encodes the specified PurgeUserEventsRequest message. Does not implicitly {@link google.cloud.retail.v2.PurgeUserEventsRequest.verify|verify} messages.
                     * @param message PurgeUserEventsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IPurgeUserEventsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PurgeUserEventsRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2.PurgeUserEventsRequest.verify|verify} messages.
                     * @param message PurgeUserEventsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IPurgeUserEventsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PurgeUserEventsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PurgeUserEventsRequest
                     * @throws {Error} If the payload is not 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.retail.v2.PurgeUserEventsRequest;

                    /**
                     * Decodes a PurgeUserEventsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PurgeUserEventsRequest
                     * @throws {Error} If the payload 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.retail.v2.PurgeUserEventsRequest;

                    /**
                     * Verifies a PurgeUserEventsRequest message.
                     * @param message Plain 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 PurgeUserEventsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PurgeUserEventsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.PurgeUserEventsRequest;

                    /**
                     * Creates a plain object from a PurgeUserEventsRequest message. Also converts values to other types if specified.
                     * @param message PurgeUserEventsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.PurgeUserEventsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PurgeUserEventsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PurgeUserEventsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PurgeUserEventsResponse. */
                interface IPurgeUserEventsResponse {

                    /** PurgeUserEventsResponse purgedEventsCount */
                    purgedEventsCount?: (number|Long|string|null);
                }

                /** Represents a PurgeUserEventsResponse. */
                class PurgeUserEventsResponse implements IPurgeUserEventsResponse {

                    /**
                     * Constructs a new PurgeUserEventsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IPurgeUserEventsResponse);

                    /** PurgeUserEventsResponse purgedEventsCount. */
                    public purgedEventsCount: (number|Long|string);

                    /**
                     * Creates a new PurgeUserEventsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PurgeUserEventsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IPurgeUserEventsResponse): google.cloud.retail.v2.PurgeUserEventsResponse;

                    /**
                     * Encodes the specified PurgeUserEventsResponse message. Does not implicitly {@link google.cloud.retail.v2.PurgeUserEventsResponse.verify|verify} messages.
                     * @param message PurgeUserEventsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IPurgeUserEventsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PurgeUserEventsResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2.PurgeUserEventsResponse.verify|verify} messages.
                     * @param message PurgeUserEventsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IPurgeUserEventsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PurgeUserEventsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PurgeUserEventsResponse
                     * @throws {Error} If the payload is not 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.retail.v2.PurgeUserEventsResponse;

                    /**
                     * Decodes a PurgeUserEventsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PurgeUserEventsResponse
                     * @throws {Error} If the payload 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.retail.v2.PurgeUserEventsResponse;

                    /**
                     * Verifies a PurgeUserEventsResponse message.
                     * @param message Plain 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 PurgeUserEventsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PurgeUserEventsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.PurgeUserEventsResponse;

                    /**
                     * Creates a plain object from a PurgeUserEventsResponse message. Also converts values to other types if specified.
                     * @param message PurgeUserEventsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.PurgeUserEventsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PurgeUserEventsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PurgeUserEventsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ServingConfig. */
                interface IServingConfig {

                    /** ServingConfig name */
                    name?: (string|null);

                    /** ServingConfig displayName */
                    displayName?: (string|null);

                    /** ServingConfig modelId */
                    modelId?: (string|null);

                    /** ServingConfig priceRerankingLevel */
                    priceRerankingLevel?: (string|null);

                    /** ServingConfig facetControlIds */
                    facetControlIds?: (string[]|null);

                    /** ServingConfig dynamicFacetSpec */
                    dynamicFacetSpec?: (google.cloud.retail.v2.SearchRequest.IDynamicFacetSpec|null);

                    /** ServingConfig boostControlIds */
                    boostControlIds?: (string[]|null);

                    /** ServingConfig filterControlIds */
                    filterControlIds?: (string[]|null);

                    /** ServingConfig redirectControlIds */
                    redirectControlIds?: (string[]|null);

                    /** ServingConfig twowaySynonymsControlIds */
                    twowaySynonymsControlIds?: (string[]|null);

                    /** ServingConfig onewaySynonymsControlIds */
                    onewaySynonymsControlIds?: (string[]|null);

                    /** ServingConfig doNotAssociateControlIds */
                    doNotAssociateControlIds?: (string[]|null);

                    /** ServingConfig replacementControlIds */
                    replacementControlIds?: (string[]|null);

                    /** ServingConfig ignoreControlIds */
                    ignoreControlIds?: (string[]|null);

                    /** ServingConfig diversityLevel */
                    diversityLevel?: (string|null);

                    /** ServingConfig diversityType */
                    diversityType?: (google.cloud.retail.v2.ServingConfig.DiversityType|keyof typeof google.cloud.retail.v2.ServingConfig.DiversityType|null);

                    /** ServingConfig enableCategoryFilterLevel */
                    enableCategoryFilterLevel?: (string|null);

                    /** ServingConfig ignoreRecsDenylist */
                    ignoreRecsDenylist?: (boolean|null);

                    /** ServingConfig personalizationSpec */
                    personalizationSpec?: (google.cloud.retail.v2.SearchRequest.IPersonalizationSpec|null);

                    /** ServingConfig solutionTypes */
                    solutionTypes?: (google.cloud.retail.v2.SolutionType[]|null);
                }

                /** Represents a ServingConfig. */
                class ServingConfig implements IServingConfig {

                    /**
                     * Constructs a new ServingConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IServingConfig);

                    /** ServingConfig name. */
                    public name: string;

                    /** ServingConfig displayName. */
                    public displayName: string;

                    /** ServingConfig modelId. */
                    public modelId: string;

                    /** ServingConfig priceRerankingLevel. */
                    public priceRerankingLevel: string;

                    /** ServingConfig facetControlIds. */
                    public facetControlIds: string[];

                    /** ServingConfig dynamicFacetSpec. */
                    public dynamicFacetSpec?: (google.cloud.retail.v2.SearchRequest.IDynamicFacetSpec|null);

                    /** ServingConfig boostControlIds. */
                    public boostControlIds: string[];

                    /** ServingConfig filterControlIds. */
                    public filterControlIds: string[];

                    /** ServingConfig redirectControlIds. */
                    public redirectControlIds: string[];

                    /** ServingConfig twowaySynonymsControlIds. */
                    public twowaySynonymsControlIds: string[];

                    /** ServingConfig onewaySynonymsControlIds. */
                    public onewaySynonymsControlIds: string[];

                    /** ServingConfig doNotAssociateControlIds. */
                    public doNotAssociateControlIds: string[];

                    /** ServingConfig replacementControlIds. */
                    public replacementControlIds: string[];

                    /** ServingConfig ignoreControlIds. */
                    public ignoreControlIds: string[];

                    /** ServingConfig diversityLevel. */
                    public diversityLevel: string;

                    /** ServingConfig diversityType. */
                    public diversityType: (google.cloud.retail.v2.ServingConfig.DiversityType|keyof typeof google.cloud.retail.v2.ServingConfig.DiversityType);

                    /** ServingConfig enableCategoryFilterLevel. */
                    public enableCategoryFilterLevel: string;

                    /** ServingConfig ignoreRecsDenylist. */
                    public ignoreRecsDenylist: boolean;

                    /** ServingConfig personalizationSpec. */
                    public personalizationSpec?: (google.cloud.retail.v2.SearchRequest.IPersonalizationSpec|null);

                    /** ServingConfig solutionTypes. */
                    public solutionTypes: google.cloud.retail.v2.SolutionType[];

                    /**
                     * Creates a new ServingConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ServingConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IServingConfig): google.cloud.retail.v2.ServingConfig;

                    /**
                     * Encodes the specified ServingConfig message. Does not implicitly {@link google.cloud.retail.v2.ServingConfig.verify|verify} messages.
                     * @param message ServingConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IServingConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ServingConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2.ServingConfig.verify|verify} messages.
                     * @param message ServingConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IServingConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ServingConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ServingConfig
                     * @throws {Error} If the payload is not 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.retail.v2.ServingConfig;

                    /**
                     * Decodes a ServingConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ServingConfig
                     * @throws {Error} If the payload 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.retail.v2.ServingConfig;

                    /**
                     * Verifies a ServingConfig message.
                     * @param message Plain 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 ServingConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ServingConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ServingConfig;

                    /**
                     * Creates a plain object from a ServingConfig message. Also converts values to other types if specified.
                     * @param message ServingConfig
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.ServingConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ServingConfig to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ServingConfig
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace ServingConfig {

                    /** DiversityType enum. */
                    enum DiversityType {
                        DIVERSITY_TYPE_UNSPECIFIED = 0,
                        RULE_BASED_DIVERSITY = 2,
                        DATA_DRIVEN_DIVERSITY = 3
                    }
                }

                /** Represents a ServingConfigService */
                class ServingConfigService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new ServingConfigService 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 ServingConfigService 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): ServingConfigService;

                    /**
                     * Calls CreateServingConfig.
                     * @param request CreateServingConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ServingConfig
                     */
                    public createServingConfig(request: google.cloud.retail.v2.ICreateServingConfigRequest, callback: google.cloud.retail.v2.ServingConfigService.CreateServingConfigCallback): void;

                    /**
                     * Calls CreateServingConfig.
                     * @param request CreateServingConfigRequest message or plain object
                     * @returns Promise
                     */
                    public createServingConfig(request: google.cloud.retail.v2.ICreateServingConfigRequest): Promise<google.cloud.retail.v2.ServingConfig>;

                    /**
                     * Calls DeleteServingConfig.
                     * @param request DeleteServingConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Empty
                     */
                    public deleteServingConfig(request: google.cloud.retail.v2.IDeleteServingConfigRequest, callback: google.cloud.retail.v2.ServingConfigService.DeleteServingConfigCallback): void;

                    /**
                     * Calls DeleteServingConfig.
                     * @param request DeleteServingConfigRequest message or plain object
                     * @returns Promise
                     */
                    public deleteServingConfig(request: google.cloud.retail.v2.IDeleteServingConfigRequest): Promise<google.protobuf.Empty>;

                    /**
                     * Calls UpdateServingConfig.
                     * @param request UpdateServingConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ServingConfig
                     */
                    public updateServingConfig(request: google.cloud.retail.v2.IUpdateServingConfigRequest, callback: google.cloud.retail.v2.ServingConfigService.UpdateServingConfigCallback): void;

                    /**
                     * Calls UpdateServingConfig.
                     * @param request UpdateServingConfigRequest message or plain object
                     * @returns Promise
                     */
                    public updateServingConfig(request: google.cloud.retail.v2.IUpdateServingConfigRequest): Promise<google.cloud.retail.v2.ServingConfig>;

                    /**
                     * Calls GetServingConfig.
                     * @param request GetServingConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ServingConfig
                     */
                    public getServingConfig(request: google.cloud.retail.v2.IGetServingConfigRequest, callback: google.cloud.retail.v2.ServingConfigService.GetServingConfigCallback): void;

                    /**
                     * Calls GetServingConfig.
                     * @param request GetServingConfigRequest message or plain object
                     * @returns Promise
                     */
                    public getServingConfig(request: google.cloud.retail.v2.IGetServingConfigRequest): Promise<google.cloud.retail.v2.ServingConfig>;

                    /**
                     * Calls ListServingConfigs.
                     * @param request ListServingConfigsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListServingConfigsResponse
                     */
                    public listServingConfigs(request: google.cloud.retail.v2.IListServingConfigsRequest, callback: google.cloud.retail.v2.ServingConfigService.ListServingConfigsCallback): void;

                    /**
                     * Calls ListServingConfigs.
                     * @param request ListServingConfigsRequest message or plain object
                     * @returns Promise
                     */
                    public listServingConfigs(request: google.cloud.retail.v2.IListServingConfigsRequest): Promise<google.cloud.retail.v2.ListServingConfigsResponse>;

                    /**
                     * Calls AddControl.
                     * @param request AddControlRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ServingConfig
                     */
                    public addControl(request: google.cloud.retail.v2.IAddControlRequest, callback: google.cloud.retail.v2.ServingConfigService.AddControlCallback): void;

                    /**
                     * Calls AddControl.
                     * @param request AddControlRequest message or plain object
                     * @returns Promise
                     */
                    public addControl(request: google.cloud.retail.v2.IAddControlRequest): Promise<google.cloud.retail.v2.ServingConfig>;

                    /**
                     * Calls RemoveControl.
                     * @param request RemoveControlRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ServingConfig
                     */
                    public removeControl(request: google.cloud.retail.v2.IRemoveControlRequest, callback: google.cloud.retail.v2.ServingConfigService.RemoveControlCallback): void;

                    /**
                     * Calls RemoveControl.
                     * @param request RemoveControlRequest message or plain object
                     * @returns Promise
                     */
                    public removeControl(request: google.cloud.retail.v2.IRemoveControlRequest): Promise<google.cloud.retail.v2.ServingConfig>;
                }

                namespace ServingConfigService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.ServingConfigService|createServingConfig}.
                     * @param error Error, if any
                     * @param [response] ServingConfig
                     */
                    type CreateServingConfigCallback = (error: (Error|null), response?: google.cloud.retail.v2.ServingConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.ServingConfigService|deleteServingConfig}.
                     * @param error Error, if any
                     * @param [response] Empty
                     */
                    type DeleteServingConfigCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.ServingConfigService|updateServingConfig}.
                     * @param error Error, if any
                     * @param [response] ServingConfig
                     */
                    type UpdateServingConfigCallback = (error: (Error|null), response?: google.cloud.retail.v2.ServingConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.ServingConfigService|getServingConfig}.
                     * @param error Error, if any
                     * @param [response] ServingConfig
                     */
                    type GetServingConfigCallback = (error: (Error|null), response?: google.cloud.retail.v2.ServingConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.ServingConfigService|listServingConfigs}.
                     * @param error Error, if any
                     * @param [response] ListServingConfigsResponse
                     */
                    type ListServingConfigsCallback = (error: (Error|null), response?: google.cloud.retail.v2.ListServingConfigsResponse) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.ServingConfigService|addControl}.
                     * @param error Error, if any
                     * @param [response] ServingConfig
                     */
                    type AddControlCallback = (error: (Error|null), response?: google.cloud.retail.v2.ServingConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.ServingConfigService|removeControl}.
                     * @param error Error, if any
                     * @param [response] ServingConfig
                     */
                    type RemoveControlCallback = (error: (Error|null), response?: google.cloud.retail.v2.ServingConfig) => void;
                }

                /** Properties of a CreateServingConfigRequest. */
                interface ICreateServingConfigRequest {

                    /** CreateServingConfigRequest parent */
                    parent?: (string|null);

                    /** CreateServingConfigRequest servingConfig */
                    servingConfig?: (google.cloud.retail.v2.IServingConfig|null);

                    /** CreateServingConfigRequest servingConfigId */
                    servingConfigId?: (string|null);
                }

                /** Represents a CreateServingConfigRequest. */
                class CreateServingConfigRequest implements ICreateServingConfigRequest {

                    /**
                     * Constructs a new CreateServingConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.ICreateServingConfigRequest);

                    /** CreateServingConfigRequest parent. */
                    public parent: string;

                    /** CreateServingConfigRequest servingConfig. */
                    public servingConfig?: (google.cloud.retail.v2.IServingConfig|null);

                    /** CreateServingConfigRequest servingConfigId. */
                    public servingConfigId: string;

                    /**
                     * Creates a new CreateServingConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CreateServingConfigRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.ICreateServingConfigRequest): google.cloud.retail.v2.CreateServingConfigRequest;

                    /**
                     * Encodes the specified CreateServingConfigRequest message. Does not implicitly {@link google.cloud.retail.v2.CreateServingConfigRequest.verify|verify} messages.
                     * @param message CreateServingConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.ICreateServingConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CreateServingConfigRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2.CreateServingConfigRequest.verify|verify} messages.
                     * @param message CreateServingConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.ICreateServingConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CreateServingConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CreateServingConfigRequest
                     * @throws {Error} If the payload is not 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.retail.v2.CreateServingConfigRequest;

                    /**
                     * Decodes a CreateServingConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CreateServingConfigRequest
                     * @throws {Error} If the payload 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.retail.v2.CreateServingConfigRequest;

                    /**
                     * Verifies a CreateServingConfigRequest message.
                     * @param message Plain 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 CreateServingConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CreateServingConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.CreateServingConfigRequest;

                    /**
                     * Creates a plain object from a CreateServingConfigRequest message. Also converts values to other types if specified.
                     * @param message CreateServingConfigRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.CreateServingConfigRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CreateServingConfigRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CreateServingConfigRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateServingConfigRequest. */
                interface IUpdateServingConfigRequest {

                    /** UpdateServingConfigRequest servingConfig */
                    servingConfig?: (google.cloud.retail.v2.IServingConfig|null);

                    /** UpdateServingConfigRequest updateMask */
                    updateMask?: (google.protobuf.IFieldMask|null);
                }

                /** Represents an UpdateServingConfigRequest. */
                class UpdateServingConfigRequest implements IUpdateServingConfigRequest {

                    /**
                     * Constructs a new UpdateServingConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IUpdateServingConfigRequest);

                    /** UpdateServingConfigRequest servingConfig. */
                    public servingConfig?: (google.cloud.retail.v2.IServingConfig|null);

                    /** UpdateServingConfigRequest updateMask. */
                    public updateMask?: (google.protobuf.IFieldMask|null);

                    /**
                     * Creates a new UpdateServingConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateServingConfigRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IUpdateServingConfigRequest): google.cloud.retail.v2.UpdateServingConfigRequest;

                    /**
                     * Encodes the specified UpdateServingConfigRequest message. Does not implicitly {@link google.cloud.retail.v2.UpdateServingConfigRequest.verify|verify} messages.
                     * @param message UpdateServingConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IUpdateServingConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateServingConfigRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2.UpdateServingConfigRequest.verify|verify} messages.
                     * @param message UpdateServingConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IUpdateServingConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateServingConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateServingConfigRequest
                     * @throws {Error} If the payload is not 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.retail.v2.UpdateServingConfigRequest;

                    /**
                     * Decodes an UpdateServingConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateServingConfigRequest
                     * @throws {Error} If the payload 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.retail.v2.UpdateServingConfigRequest;

                    /**
                     * Verifies an UpdateServingConfigRequest message.
                     * @param message Plain 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 UpdateServingConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateServingConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.UpdateServingConfigRequest;

                    /**
                     * Creates a plain object from an UpdateServingConfigRequest message. Also converts values to other types if specified.
                     * @param message UpdateServingConfigRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.UpdateServingConfigRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateServingConfigRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateServingConfigRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeleteServingConfigRequest. */
                interface IDeleteServingConfigRequest {

                    /** DeleteServingConfigRequest name */
                    name?: (string|null);
                }

                /** Represents a DeleteServingConfigRequest. */
                class DeleteServingConfigRequest implements IDeleteServingConfigRequest {

                    /**
                     * Constructs a new DeleteServingConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IDeleteServingConfigRequest);

                    /** DeleteServingConfigRequest name. */
                    public name: string;

                    /**
                     * Creates a new DeleteServingConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeleteServingConfigRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IDeleteServingConfigRequest): google.cloud.retail.v2.DeleteServingConfigRequest;

                    /**
                     * Encodes the specified DeleteServingConfigRequest message. Does not implicitly {@link google.cloud.retail.v2.DeleteServingConfigRequest.verify|verify} messages.
                     * @param message DeleteServingConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IDeleteServingConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeleteServingConfigRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2.DeleteServingConfigRequest.verify|verify} messages.
                     * @param message DeleteServingConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IDeleteServingConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeleteServingConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeleteServingConfigRequest
                     * @throws {Error} If the payload is not 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.retail.v2.DeleteServingConfigRequest;

                    /**
                     * Decodes a DeleteServingConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeleteServingConfigRequest
                     * @throws {Error} If the payload 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.retail.v2.DeleteServingConfigRequest;

                    /**
                     * Verifies a DeleteServingConfigRequest message.
                     * @param message Plain 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 DeleteServingConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeleteServingConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.DeleteServingConfigRequest;

                    /**
                     * Creates a plain object from a DeleteServingConfigRequest message. Also converts values to other types if specified.
                     * @param message DeleteServingConfigRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.DeleteServingConfigRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeleteServingConfigRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeleteServingConfigRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetServingConfigRequest. */
                interface IGetServingConfigRequest {

                    /** GetServingConfigRequest name */
                    name?: (string|null);
                }

                /** Represents a GetServingConfigRequest. */
                class GetServingConfigRequest implements IGetServingConfigRequest {

                    /**
                     * Constructs a new GetServingConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IGetServingConfigRequest);

                    /** GetServingConfigRequest name. */
                    public name: string;

                    /**
                     * Creates a new GetServingConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetServingConfigRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IGetServingConfigRequest): google.cloud.retail.v2.GetServingConfigRequest;

                    /**
                     * Encodes the specified GetServingConfigRequest message. Does not implicitly {@link google.cloud.retail.v2.GetServingConfigRequest.verify|verify} messages.
                     * @param message GetServingConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IGetServingConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetServingConfigRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2.GetServingConfigRequest.verify|verify} messages.
                     * @param message GetServingConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IGetServingConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetServingConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetServingConfigRequest
                     * @throws {Error} If the payload is not 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.retail.v2.GetServingConfigRequest;

                    /**
                     * Decodes a GetServingConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetServingConfigRequest
                     * @throws {Error} If the payload 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.retail.v2.GetServingConfigRequest;

                    /**
                     * Verifies a GetServingConfigRequest message.
                     * @param message Plain 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 GetServingConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetServingConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.GetServingConfigRequest;

                    /**
                     * Creates a plain object from a GetServingConfigRequest message. Also converts values to other types if specified.
                     * @param message GetServingConfigRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.GetServingConfigRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetServingConfigRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetServingConfigRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListServingConfigsRequest. */
                interface IListServingConfigsRequest {

                    /** ListServingConfigsRequest parent */
                    parent?: (string|null);

                    /** ListServingConfigsRequest pageSize */
                    pageSize?: (number|null);

                    /** ListServingConfigsRequest pageToken */
                    pageToken?: (string|null);
                }

                /** Represents a ListServingConfigsRequest. */
                class ListServingConfigsRequest implements IListServingConfigsRequest {

                    /**
                     * Constructs a new ListServingConfigsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IListServingConfigsRequest);

                    /** ListServingConfigsRequest parent. */
                    public parent: string;

                    /** ListServingConfigsRequest pageSize. */
                    public pageSize: number;

                    /** ListServingConfigsRequest pageToken. */
                    public pageToken: string;

                    /**
                     * Creates a new ListServingConfigsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListServingConfigsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IListServingConfigsRequest): google.cloud.retail.v2.ListServingConfigsRequest;

                    /**
                     * Encodes the specified ListServingConfigsRequest message. Does not implicitly {@link google.cloud.retail.v2.ListServingConfigsRequest.verify|verify} messages.
                     * @param message ListServingConfigsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IListServingConfigsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListServingConfigsRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2.ListServingConfigsRequest.verify|verify} messages.
                     * @param message ListServingConfigsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IListServingConfigsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListServingConfigsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListServingConfigsRequest
                     * @throws {Error} If the payload is not 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.retail.v2.ListServingConfigsRequest;

                    /**
                     * Decodes a ListServingConfigsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListServingConfigsRequest
                     * @throws {Error} If the payload 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.retail.v2.ListServingConfigsRequest;

                    /**
                     * Verifies a ListServingConfigsRequest message.
                     * @param message Plain 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 ListServingConfigsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListServingConfigsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ListServingConfigsRequest;

                    /**
                     * Creates a plain object from a ListServingConfigsRequest message. Also converts values to other types if specified.
                     * @param message ListServingConfigsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.ListServingConfigsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListServingConfigsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListServingConfigsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListServingConfigsResponse. */
                interface IListServingConfigsResponse {

                    /** ListServingConfigsResponse servingConfigs */
                    servingConfigs?: (google.cloud.retail.v2.IServingConfig[]|null);

                    /** ListServingConfigsResponse nextPageToken */
                    nextPageToken?: (string|null);
                }

                /** Represents a ListServingConfigsResponse. */
                class ListServingConfigsResponse implements IListServingConfigsResponse {

                    /**
                     * Constructs a new ListServingConfigsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IListServingConfigsResponse);

                    /** ListServingConfigsResponse servingConfigs. */
                    public servingConfigs: google.cloud.retail.v2.IServingConfig[];

                    /** ListServingConfigsResponse nextPageToken. */
                    public nextPageToken: string;

                    /**
                     * Creates a new ListServingConfigsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListServingConfigsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IListServingConfigsResponse): google.cloud.retail.v2.ListServingConfigsResponse;

                    /**
                     * Encodes the specified ListServingConfigsResponse message. Does not implicitly {@link google.cloud.retail.v2.ListServingConfigsResponse.verify|verify} messages.
                     * @param message ListServingConfigsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IListServingConfigsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListServingConfigsResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2.ListServingConfigsResponse.verify|verify} messages.
                     * @param message ListServingConfigsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IListServingConfigsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListServingConfigsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListServingConfigsResponse
                     * @throws {Error} If the payload is not 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.retail.v2.ListServingConfigsResponse;

                    /**
                     * Decodes a ListServingConfigsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListServingConfigsResponse
                     * @throws {Error} If the payload 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.retail.v2.ListServingConfigsResponse;

                    /**
                     * Verifies a ListServingConfigsResponse message.
                     * @param message Plain 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 ListServingConfigsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListServingConfigsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.ListServingConfigsResponse;

                    /**
                     * Creates a plain object from a ListServingConfigsResponse message. Also converts values to other types if specified.
                     * @param message ListServingConfigsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.ListServingConfigsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListServingConfigsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListServingConfigsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an AddControlRequest. */
                interface IAddControlRequest {

                    /** AddControlRequest servingConfig */
                    servingConfig?: (string|null);

                    /** AddControlRequest controlId */
                    controlId?: (string|null);
                }

                /** Represents an AddControlRequest. */
                class AddControlRequest implements IAddControlRequest {

                    /**
                     * Constructs a new AddControlRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IAddControlRequest);

                    /** AddControlRequest servingConfig. */
                    public servingConfig: string;

                    /** AddControlRequest controlId. */
                    public controlId: string;

                    /**
                     * Creates a new AddControlRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns AddControlRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IAddControlRequest): google.cloud.retail.v2.AddControlRequest;

                    /**
                     * Encodes the specified AddControlRequest message. Does not implicitly {@link google.cloud.retail.v2.AddControlRequest.verify|verify} messages.
                     * @param message AddControlRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IAddControlRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified AddControlRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2.AddControlRequest.verify|verify} messages.
                     * @param message AddControlRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IAddControlRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an AddControlRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns AddControlRequest
                     * @throws {Error} If the payload is not 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.retail.v2.AddControlRequest;

                    /**
                     * Decodes an AddControlRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns AddControlRequest
                     * @throws {Error} If the payload 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.retail.v2.AddControlRequest;

                    /**
                     * Verifies an AddControlRequest message.
                     * @param message Plain 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 AddControlRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns AddControlRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.AddControlRequest;

                    /**
                     * Creates a plain object from an AddControlRequest message. Also converts values to other types if specified.
                     * @param message AddControlRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.AddControlRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this AddControlRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for AddControlRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RemoveControlRequest. */
                interface IRemoveControlRequest {

                    /** RemoveControlRequest servingConfig */
                    servingConfig?: (string|null);

                    /** RemoveControlRequest controlId */
                    controlId?: (string|null);
                }

                /** Represents a RemoveControlRequest. */
                class RemoveControlRequest implements IRemoveControlRequest {

                    /**
                     * Constructs a new RemoveControlRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IRemoveControlRequest);

                    /** RemoveControlRequest servingConfig. */
                    public servingConfig: string;

                    /** RemoveControlRequest controlId. */
                    public controlId: string;

                    /**
                     * Creates a new RemoveControlRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RemoveControlRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IRemoveControlRequest): google.cloud.retail.v2.RemoveControlRequest;

                    /**
                     * Encodes the specified RemoveControlRequest message. Does not implicitly {@link google.cloud.retail.v2.RemoveControlRequest.verify|verify} messages.
                     * @param message RemoveControlRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IRemoveControlRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RemoveControlRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2.RemoveControlRequest.verify|verify} messages.
                     * @param message RemoveControlRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IRemoveControlRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RemoveControlRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RemoveControlRequest
                     * @throws {Error} If the payload is not 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.retail.v2.RemoveControlRequest;

                    /**
                     * Decodes a RemoveControlRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RemoveControlRequest
                     * @throws {Error} If the payload 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.retail.v2.RemoveControlRequest;

                    /**
                     * Verifies a RemoveControlRequest message.
                     * @param message Plain 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 RemoveControlRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RemoveControlRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.RemoveControlRequest;

                    /**
                     * Creates a plain object from a RemoveControlRequest message. Also converts values to other types if specified.
                     * @param message RemoveControlRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.RemoveControlRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RemoveControlRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RemoveControlRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Represents a UserEventService */
                class UserEventService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new UserEventService 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 UserEventService 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): UserEventService;

                    /**
                     * Calls WriteUserEvent.
                     * @param request WriteUserEventRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and UserEvent
                     */
                    public writeUserEvent(request: google.cloud.retail.v2.IWriteUserEventRequest, callback: google.cloud.retail.v2.UserEventService.WriteUserEventCallback): void;

                    /**
                     * Calls WriteUserEvent.
                     * @param request WriteUserEventRequest message or plain object
                     * @returns Promise
                     */
                    public writeUserEvent(request: google.cloud.retail.v2.IWriteUserEventRequest): Promise<google.cloud.retail.v2.UserEvent>;

                    /**
                     * Calls CollectUserEvent.
                     * @param request CollectUserEventRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and HttpBody
                     */
                    public collectUserEvent(request: google.cloud.retail.v2.ICollectUserEventRequest, callback: google.cloud.retail.v2.UserEventService.CollectUserEventCallback): void;

                    /**
                     * Calls CollectUserEvent.
                     * @param request CollectUserEventRequest message or plain object
                     * @returns Promise
                     */
                    public collectUserEvent(request: google.cloud.retail.v2.ICollectUserEventRequest): Promise<google.api.HttpBody>;

                    /**
                     * Calls PurgeUserEvents.
                     * @param request PurgeUserEventsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public purgeUserEvents(request: google.cloud.retail.v2.IPurgeUserEventsRequest, callback: google.cloud.retail.v2.UserEventService.PurgeUserEventsCallback): void;

                    /**
                     * Calls PurgeUserEvents.
                     * @param request PurgeUserEventsRequest message or plain object
                     * @returns Promise
                     */
                    public purgeUserEvents(request: google.cloud.retail.v2.IPurgeUserEventsRequest): Promise<google.longrunning.Operation>;

                    /**
                     * Calls ImportUserEvents.
                     * @param request ImportUserEventsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public importUserEvents(request: google.cloud.retail.v2.IImportUserEventsRequest, callback: google.cloud.retail.v2.UserEventService.ImportUserEventsCallback): void;

                    /**
                     * Calls ImportUserEvents.
                     * @param request ImportUserEventsRequest message or plain object
                     * @returns Promise
                     */
                    public importUserEvents(request: google.cloud.retail.v2.IImportUserEventsRequest): Promise<google.longrunning.Operation>;

                    /**
                     * Calls RejoinUserEvents.
                     * @param request RejoinUserEventsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public rejoinUserEvents(request: google.cloud.retail.v2.IRejoinUserEventsRequest, callback: google.cloud.retail.v2.UserEventService.RejoinUserEventsCallback): void;

                    /**
                     * Calls RejoinUserEvents.
                     * @param request RejoinUserEventsRequest message or plain object
                     * @returns Promise
                     */
                    public rejoinUserEvents(request: google.cloud.retail.v2.IRejoinUserEventsRequest): Promise<google.longrunning.Operation>;
                }

                namespace UserEventService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.UserEventService|writeUserEvent}.
                     * @param error Error, if any
                     * @param [response] UserEvent
                     */
                    type WriteUserEventCallback = (error: (Error|null), response?: google.cloud.retail.v2.UserEvent) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.UserEventService|collectUserEvent}.
                     * @param error Error, if any
                     * @param [response] HttpBody
                     */
                    type CollectUserEventCallback = (error: (Error|null), response?: google.api.HttpBody) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.UserEventService|purgeUserEvents}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type PurgeUserEventsCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.UserEventService|importUserEvents}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type ImportUserEventsCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2.UserEventService|rejoinUserEvents}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type RejoinUserEventsCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;
                }

                /** Properties of a WriteUserEventRequest. */
                interface IWriteUserEventRequest {

                    /** WriteUserEventRequest parent */
                    parent?: (string|null);

                    /** WriteUserEventRequest userEvent */
                    userEvent?: (google.cloud.retail.v2.IUserEvent|null);

                    /** WriteUserEventRequest writeAsync */
                    writeAsync?: (boolean|null);
                }

                /** Represents a WriteUserEventRequest. */
                class WriteUserEventRequest implements IWriteUserEventRequest {

                    /**
                     * Constructs a new WriteUserEventRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IWriteUserEventRequest);

                    /** WriteUserEventRequest parent. */
                    public parent: string;

                    /** WriteUserEventRequest userEvent. */
                    public userEvent?: (google.cloud.retail.v2.IUserEvent|null);

                    /** WriteUserEventRequest writeAsync. */
                    public writeAsync: boolean;

                    /**
                     * Creates a new WriteUserEventRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WriteUserEventRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IWriteUserEventRequest): google.cloud.retail.v2.WriteUserEventRequest;

                    /**
                     * Encodes the specified WriteUserEventRequest message. Does not implicitly {@link google.cloud.retail.v2.WriteUserEventRequest.verify|verify} messages.
                     * @param message WriteUserEventRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IWriteUserEventRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WriteUserEventRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2.WriteUserEventRequest.verify|verify} messages.
                     * @param message WriteUserEventRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IWriteUserEventRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WriteUserEventRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WriteUserEventRequest
                     * @throws {Error} If the payload is not 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.retail.v2.WriteUserEventRequest;

                    /**
                     * Decodes a WriteUserEventRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WriteUserEventRequest
                     * @throws {Error} If the payload 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.retail.v2.WriteUserEventRequest;

                    /**
                     * Verifies a WriteUserEventRequest message.
                     * @param message Plain 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 WriteUserEventRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WriteUserEventRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.WriteUserEventRequest;

                    /**
                     * Creates a plain object from a WriteUserEventRequest message. Also converts values to other types if specified.
                     * @param message WriteUserEventRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.WriteUserEventRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WriteUserEventRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WriteUserEventRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CollectUserEventRequest. */
                interface ICollectUserEventRequest {

                    /** CollectUserEventRequest prebuiltRule */
                    prebuiltRule?: (string|null);

                    /** CollectUserEventRequest parent */
                    parent?: (string|null);

                    /** CollectUserEventRequest userEvent */
                    userEvent?: (string|null);

                    /** CollectUserEventRequest uri */
                    uri?: (string|null);

                    /** CollectUserEventRequest ets */
                    ets?: (number|Long|string|null);

                    /** CollectUserEventRequest rawJson */
                    rawJson?: (string|null);
                }

                /** Represents a CollectUserEventRequest. */
                class CollectUserEventRequest implements ICollectUserEventRequest {

                    /**
                     * Constructs a new CollectUserEventRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.ICollectUserEventRequest);

                    /** CollectUserEventRequest prebuiltRule. */
                    public prebuiltRule?: (string|null);

                    /** CollectUserEventRequest parent. */
                    public parent: string;

                    /** CollectUserEventRequest userEvent. */
                    public userEvent: string;

                    /** CollectUserEventRequest uri. */
                    public uri: string;

                    /** CollectUserEventRequest ets. */
                    public ets: (number|Long|string);

                    /** CollectUserEventRequest rawJson. */
                    public rawJson: string;

                    /** CollectUserEventRequest conversionRule. */
                    public conversionRule?: "prebuiltRule";

                    /**
                     * Creates a new CollectUserEventRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CollectUserEventRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.ICollectUserEventRequest): google.cloud.retail.v2.CollectUserEventRequest;

                    /**
                     * Encodes the specified CollectUserEventRequest message. Does not implicitly {@link google.cloud.retail.v2.CollectUserEventRequest.verify|verify} messages.
                     * @param message CollectUserEventRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.ICollectUserEventRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CollectUserEventRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2.CollectUserEventRequest.verify|verify} messages.
                     * @param message CollectUserEventRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.ICollectUserEventRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CollectUserEventRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CollectUserEventRequest
                     * @throws {Error} If the payload is not 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.retail.v2.CollectUserEventRequest;

                    /**
                     * Decodes a CollectUserEventRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CollectUserEventRequest
                     * @throws {Error} If the payload 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.retail.v2.CollectUserEventRequest;

                    /**
                     * Verifies a CollectUserEventRequest message.
                     * @param message Plain 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 CollectUserEventRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CollectUserEventRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.CollectUserEventRequest;

                    /**
                     * Creates a plain object from a CollectUserEventRequest message. Also converts values to other types if specified.
                     * @param message CollectUserEventRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.CollectUserEventRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CollectUserEventRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CollectUserEventRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RejoinUserEventsRequest. */
                interface IRejoinUserEventsRequest {

                    /** RejoinUserEventsRequest parent */
                    parent?: (string|null);

                    /** RejoinUserEventsRequest userEventRejoinScope */
                    userEventRejoinScope?: (google.cloud.retail.v2.RejoinUserEventsRequest.UserEventRejoinScope|keyof typeof google.cloud.retail.v2.RejoinUserEventsRequest.UserEventRejoinScope|null);
                }

                /** Represents a RejoinUserEventsRequest. */
                class RejoinUserEventsRequest implements IRejoinUserEventsRequest {

                    /**
                     * Constructs a new RejoinUserEventsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IRejoinUserEventsRequest);

                    /** RejoinUserEventsRequest parent. */
                    public parent: string;

                    /** RejoinUserEventsRequest userEventRejoinScope. */
                    public userEventRejoinScope: (google.cloud.retail.v2.RejoinUserEventsRequest.UserEventRejoinScope|keyof typeof google.cloud.retail.v2.RejoinUserEventsRequest.UserEventRejoinScope);

                    /**
                     * Creates a new RejoinUserEventsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RejoinUserEventsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IRejoinUserEventsRequest): google.cloud.retail.v2.RejoinUserEventsRequest;

                    /**
                     * Encodes the specified RejoinUserEventsRequest message. Does not implicitly {@link google.cloud.retail.v2.RejoinUserEventsRequest.verify|verify} messages.
                     * @param message RejoinUserEventsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IRejoinUserEventsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RejoinUserEventsRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2.RejoinUserEventsRequest.verify|verify} messages.
                     * @param message RejoinUserEventsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IRejoinUserEventsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RejoinUserEventsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RejoinUserEventsRequest
                     * @throws {Error} If the payload is not 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.retail.v2.RejoinUserEventsRequest;

                    /**
                     * Decodes a RejoinUserEventsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RejoinUserEventsRequest
                     * @throws {Error} If the payload 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.retail.v2.RejoinUserEventsRequest;

                    /**
                     * Verifies a RejoinUserEventsRequest message.
                     * @param message Plain 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 RejoinUserEventsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RejoinUserEventsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.RejoinUserEventsRequest;

                    /**
                     * Creates a plain object from a RejoinUserEventsRequest message. Also converts values to other types if specified.
                     * @param message RejoinUserEventsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.RejoinUserEventsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RejoinUserEventsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RejoinUserEventsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace RejoinUserEventsRequest {

                    /** UserEventRejoinScope enum. */
                    enum UserEventRejoinScope {
                        USER_EVENT_REJOIN_SCOPE_UNSPECIFIED = 0,
                        JOINED_EVENTS = 1,
                        UNJOINED_EVENTS = 2
                    }
                }

                /** Properties of a RejoinUserEventsResponse. */
                interface IRejoinUserEventsResponse {

                    /** RejoinUserEventsResponse rejoinedUserEventsCount */
                    rejoinedUserEventsCount?: (number|Long|string|null);
                }

                /** Represents a RejoinUserEventsResponse. */
                class RejoinUserEventsResponse implements IRejoinUserEventsResponse {

                    /**
                     * Constructs a new RejoinUserEventsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IRejoinUserEventsResponse);

                    /** RejoinUserEventsResponse rejoinedUserEventsCount. */
                    public rejoinedUserEventsCount: (number|Long|string);

                    /**
                     * Creates a new RejoinUserEventsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RejoinUserEventsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IRejoinUserEventsResponse): google.cloud.retail.v2.RejoinUserEventsResponse;

                    /**
                     * Encodes the specified RejoinUserEventsResponse message. Does not implicitly {@link google.cloud.retail.v2.RejoinUserEventsResponse.verify|verify} messages.
                     * @param message RejoinUserEventsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IRejoinUserEventsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RejoinUserEventsResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2.RejoinUserEventsResponse.verify|verify} messages.
                     * @param message RejoinUserEventsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IRejoinUserEventsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RejoinUserEventsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RejoinUserEventsResponse
                     * @throws {Error} If the payload is not 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.retail.v2.RejoinUserEventsResponse;

                    /**
                     * Decodes a RejoinUserEventsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RejoinUserEventsResponse
                     * @throws {Error} If the payload 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.retail.v2.RejoinUserEventsResponse;

                    /**
                     * Verifies a RejoinUserEventsResponse message.
                     * @param message Plain 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 RejoinUserEventsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RejoinUserEventsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.RejoinUserEventsResponse;

                    /**
                     * Creates a plain object from a RejoinUserEventsResponse message. Also converts values to other types if specified.
                     * @param message RejoinUserEventsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.RejoinUserEventsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RejoinUserEventsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RejoinUserEventsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RejoinUserEventsMetadata. */
                interface IRejoinUserEventsMetadata {
                }

                /** Represents a RejoinUserEventsMetadata. */
                class RejoinUserEventsMetadata implements IRejoinUserEventsMetadata {

                    /**
                     * Constructs a new RejoinUserEventsMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2.IRejoinUserEventsMetadata);

                    /**
                     * Creates a new RejoinUserEventsMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RejoinUserEventsMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2.IRejoinUserEventsMetadata): google.cloud.retail.v2.RejoinUserEventsMetadata;

                    /**
                     * Encodes the specified RejoinUserEventsMetadata message. Does not implicitly {@link google.cloud.retail.v2.RejoinUserEventsMetadata.verify|verify} messages.
                     * @param message RejoinUserEventsMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2.IRejoinUserEventsMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RejoinUserEventsMetadata message, length delimited. Does not implicitly {@link google.cloud.retail.v2.RejoinUserEventsMetadata.verify|verify} messages.
                     * @param message RejoinUserEventsMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2.IRejoinUserEventsMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RejoinUserEventsMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RejoinUserEventsMetadata
                     * @throws {Error} If the payload is not 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.retail.v2.RejoinUserEventsMetadata;

                    /**
                     * Decodes a RejoinUserEventsMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RejoinUserEventsMetadata
                     * @throws {Error} If the payload 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.retail.v2.RejoinUserEventsMetadata;

                    /**
                     * Verifies a RejoinUserEventsMetadata message.
                     * @param message Plain 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 RejoinUserEventsMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RejoinUserEventsMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2.RejoinUserEventsMetadata;

                    /**
                     * Creates a plain object from a RejoinUserEventsMetadata message. Also converts values to other types if specified.
                     * @param message RejoinUserEventsMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2.RejoinUserEventsMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RejoinUserEventsMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RejoinUserEventsMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }

            /** Namespace v2alpha. */
            namespace v2alpha {

                /** Represents an AnalyticsService */
                class AnalyticsService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new AnalyticsService 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 AnalyticsService 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): AnalyticsService;

                    /**
                     * Calls ExportAnalyticsMetrics.
                     * @param request ExportAnalyticsMetricsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public exportAnalyticsMetrics(request: google.cloud.retail.v2alpha.IExportAnalyticsMetricsRequest, callback: google.cloud.retail.v2alpha.AnalyticsService.ExportAnalyticsMetricsCallback): void;

                    /**
                     * Calls ExportAnalyticsMetrics.
                     * @param request ExportAnalyticsMetricsRequest message or plain object
                     * @returns Promise
                     */
                    public exportAnalyticsMetrics(request: google.cloud.retail.v2alpha.IExportAnalyticsMetricsRequest): Promise<google.longrunning.Operation>;
                }

                namespace AnalyticsService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.AnalyticsService|exportAnalyticsMetrics}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type ExportAnalyticsMetricsCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;
                }

                /** Properties of an OutputConfig. */
                interface IOutputConfig {

                    /** OutputConfig gcsDestination */
                    gcsDestination?: (google.cloud.retail.v2alpha.OutputConfig.IGcsDestination|null);

                    /** OutputConfig bigqueryDestination */
                    bigqueryDestination?: (google.cloud.retail.v2alpha.OutputConfig.IBigQueryDestination|null);
                }

                /** Represents an OutputConfig. */
                class OutputConfig implements IOutputConfig {

                    /**
                     * Constructs a new OutputConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IOutputConfig);

                    /** OutputConfig gcsDestination. */
                    public gcsDestination?: (google.cloud.retail.v2alpha.OutputConfig.IGcsDestination|null);

                    /** OutputConfig bigqueryDestination. */
                    public bigqueryDestination?: (google.cloud.retail.v2alpha.OutputConfig.IBigQueryDestination|null);

                    /** OutputConfig destination. */
                    public destination?: ("gcsDestination"|"bigqueryDestination");

                    /**
                     * Creates a new OutputConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns OutputConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IOutputConfig): google.cloud.retail.v2alpha.OutputConfig;

                    /**
                     * Encodes the specified OutputConfig message. Does not implicitly {@link google.cloud.retail.v2alpha.OutputConfig.verify|verify} messages.
                     * @param message OutputConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IOutputConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified OutputConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.OutputConfig.verify|verify} messages.
                     * @param message OutputConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IOutputConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an OutputConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns OutputConfig
                     * @throws {Error} If the payload is not 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.retail.v2alpha.OutputConfig;

                    /**
                     * Decodes an OutputConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns OutputConfig
                     * @throws {Error} If the payload 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.retail.v2alpha.OutputConfig;

                    /**
                     * Verifies an OutputConfig message.
                     * @param message Plain 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 OutputConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns OutputConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.OutputConfig;

                    /**
                     * Creates a plain object from an OutputConfig message. Also converts values to other types if specified.
                     * @param message OutputConfig
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.OutputConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this OutputConfig to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for OutputConfig
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace OutputConfig {

                    /** Properties of a GcsDestination. */
                    interface IGcsDestination {

                        /** GcsDestination outputUriPrefix */
                        outputUriPrefix?: (string|null);
                    }

                    /** Represents a GcsDestination. */
                    class GcsDestination implements IGcsDestination {

                        /**
                         * Constructs a new GcsDestination.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.OutputConfig.IGcsDestination);

                        /** GcsDestination outputUriPrefix. */
                        public outputUriPrefix: string;

                        /**
                         * Creates a new GcsDestination instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GcsDestination instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.OutputConfig.IGcsDestination): google.cloud.retail.v2alpha.OutputConfig.GcsDestination;

                        /**
                         * Encodes the specified GcsDestination message. Does not implicitly {@link google.cloud.retail.v2alpha.OutputConfig.GcsDestination.verify|verify} messages.
                         * @param message GcsDestination message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.OutputConfig.IGcsDestination, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GcsDestination message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.OutputConfig.GcsDestination.verify|verify} messages.
                         * @param message GcsDestination message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.OutputConfig.IGcsDestination, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GcsDestination message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GcsDestination
                         * @throws {Error} If the payload is not 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.retail.v2alpha.OutputConfig.GcsDestination;

                        /**
                         * Decodes a GcsDestination message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GcsDestination
                         * @throws {Error} If the payload 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.retail.v2alpha.OutputConfig.GcsDestination;

                        /**
                         * Verifies a GcsDestination message.
                         * @param message Plain 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 GcsDestination message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GcsDestination
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.OutputConfig.GcsDestination;

                        /**
                         * Creates a plain object from a GcsDestination message. Also converts values to other types if specified.
                         * @param message GcsDestination
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.OutputConfig.GcsDestination, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GcsDestination to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GcsDestination
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a BigQueryDestination. */
                    interface IBigQueryDestination {

                        /** BigQueryDestination datasetId */
                        datasetId?: (string|null);

                        /** BigQueryDestination tableIdPrefix */
                        tableIdPrefix?: (string|null);

                        /** BigQueryDestination tableType */
                        tableType?: (string|null);
                    }

                    /** Represents a BigQueryDestination. */
                    class BigQueryDestination implements IBigQueryDestination {

                        /**
                         * Constructs a new BigQueryDestination.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.OutputConfig.IBigQueryDestination);

                        /** BigQueryDestination datasetId. */
                        public datasetId: string;

                        /** BigQueryDestination tableIdPrefix. */
                        public tableIdPrefix: string;

                        /** BigQueryDestination tableType. */
                        public tableType: string;

                        /**
                         * Creates a new BigQueryDestination instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BigQueryDestination instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.OutputConfig.IBigQueryDestination): google.cloud.retail.v2alpha.OutputConfig.BigQueryDestination;

                        /**
                         * Encodes the specified BigQueryDestination message. Does not implicitly {@link google.cloud.retail.v2alpha.OutputConfig.BigQueryDestination.verify|verify} messages.
                         * @param message BigQueryDestination message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.OutputConfig.IBigQueryDestination, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BigQueryDestination message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.OutputConfig.BigQueryDestination.verify|verify} messages.
                         * @param message BigQueryDestination message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.OutputConfig.IBigQueryDestination, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BigQueryDestination message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BigQueryDestination
                         * @throws {Error} If the payload is not 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.retail.v2alpha.OutputConfig.BigQueryDestination;

                        /**
                         * Decodes a BigQueryDestination message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BigQueryDestination
                         * @throws {Error} If the payload 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.retail.v2alpha.OutputConfig.BigQueryDestination;

                        /**
                         * Verifies a BigQueryDestination message.
                         * @param message Plain 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 BigQueryDestination message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BigQueryDestination
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.OutputConfig.BigQueryDestination;

                        /**
                         * Creates a plain object from a BigQueryDestination message. Also converts values to other types if specified.
                         * @param message BigQueryDestination
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.OutputConfig.BigQueryDestination, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BigQueryDestination to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BigQueryDestination
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of an ExportErrorsConfig. */
                interface IExportErrorsConfig {

                    /** ExportErrorsConfig gcsPrefix */
                    gcsPrefix?: (string|null);
                }

                /** Represents an ExportErrorsConfig. */
                class ExportErrorsConfig implements IExportErrorsConfig {

                    /**
                     * Constructs a new ExportErrorsConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IExportErrorsConfig);

                    /** ExportErrorsConfig gcsPrefix. */
                    public gcsPrefix?: (string|null);

                    /** ExportErrorsConfig destination. */
                    public destination?: "gcsPrefix";

                    /**
                     * Creates a new ExportErrorsConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ExportErrorsConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IExportErrorsConfig): google.cloud.retail.v2alpha.ExportErrorsConfig;

                    /**
                     * Encodes the specified ExportErrorsConfig message. Does not implicitly {@link google.cloud.retail.v2alpha.ExportErrorsConfig.verify|verify} messages.
                     * @param message ExportErrorsConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IExportErrorsConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ExportErrorsConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ExportErrorsConfig.verify|verify} messages.
                     * @param message ExportErrorsConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IExportErrorsConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ExportErrorsConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ExportErrorsConfig
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ExportErrorsConfig;

                    /**
                     * Decodes an ExportErrorsConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ExportErrorsConfig
                     * @throws {Error} If the payload 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.retail.v2alpha.ExportErrorsConfig;

                    /**
                     * Verifies an ExportErrorsConfig message.
                     * @param message Plain 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 ExportErrorsConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ExportErrorsConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ExportErrorsConfig;

                    /**
                     * Creates a plain object from an ExportErrorsConfig message. Also converts values to other types if specified.
                     * @param message ExportErrorsConfig
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ExportErrorsConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ExportErrorsConfig to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ExportErrorsConfig
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ExportProductsRequest. */
                interface IExportProductsRequest {

                    /** ExportProductsRequest parent */
                    parent?: (string|null);

                    /** ExportProductsRequest outputConfig */
                    outputConfig?: (google.cloud.retail.v2alpha.IOutputConfig|null);

                    /** ExportProductsRequest filter */
                    filter?: (string|null);
                }

                /** Represents an ExportProductsRequest. */
                class ExportProductsRequest implements IExportProductsRequest {

                    /**
                     * Constructs a new ExportProductsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IExportProductsRequest);

                    /** ExportProductsRequest parent. */
                    public parent: string;

                    /** ExportProductsRequest outputConfig. */
                    public outputConfig?: (google.cloud.retail.v2alpha.IOutputConfig|null);

                    /** ExportProductsRequest filter. */
                    public filter: string;

                    /**
                     * Creates a new ExportProductsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ExportProductsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IExportProductsRequest): google.cloud.retail.v2alpha.ExportProductsRequest;

                    /**
                     * Encodes the specified ExportProductsRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.ExportProductsRequest.verify|verify} messages.
                     * @param message ExportProductsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IExportProductsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ExportProductsRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ExportProductsRequest.verify|verify} messages.
                     * @param message ExportProductsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IExportProductsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ExportProductsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ExportProductsRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ExportProductsRequest;

                    /**
                     * Decodes an ExportProductsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ExportProductsRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.ExportProductsRequest;

                    /**
                     * Verifies an ExportProductsRequest message.
                     * @param message Plain 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 ExportProductsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ExportProductsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ExportProductsRequest;

                    /**
                     * Creates a plain object from an ExportProductsRequest message. Also converts values to other types if specified.
                     * @param message ExportProductsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ExportProductsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ExportProductsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ExportProductsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ExportUserEventsRequest. */
                interface IExportUserEventsRequest {

                    /** ExportUserEventsRequest parent */
                    parent?: (string|null);

                    /** ExportUserEventsRequest outputConfig */
                    outputConfig?: (google.cloud.retail.v2alpha.IOutputConfig|null);

                    /** ExportUserEventsRequest filter */
                    filter?: (string|null);
                }

                /** Represents an ExportUserEventsRequest. */
                class ExportUserEventsRequest implements IExportUserEventsRequest {

                    /**
                     * Constructs a new ExportUserEventsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IExportUserEventsRequest);

                    /** ExportUserEventsRequest parent. */
                    public parent: string;

                    /** ExportUserEventsRequest outputConfig. */
                    public outputConfig?: (google.cloud.retail.v2alpha.IOutputConfig|null);

                    /** ExportUserEventsRequest filter. */
                    public filter: string;

                    /**
                     * Creates a new ExportUserEventsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ExportUserEventsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IExportUserEventsRequest): google.cloud.retail.v2alpha.ExportUserEventsRequest;

                    /**
                     * Encodes the specified ExportUserEventsRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.ExportUserEventsRequest.verify|verify} messages.
                     * @param message ExportUserEventsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IExportUserEventsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ExportUserEventsRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ExportUserEventsRequest.verify|verify} messages.
                     * @param message ExportUserEventsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IExportUserEventsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ExportUserEventsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ExportUserEventsRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ExportUserEventsRequest;

                    /**
                     * Decodes an ExportUserEventsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ExportUserEventsRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.ExportUserEventsRequest;

                    /**
                     * Verifies an ExportUserEventsRequest message.
                     * @param message Plain 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 ExportUserEventsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ExportUserEventsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ExportUserEventsRequest;

                    /**
                     * Creates a plain object from an ExportUserEventsRequest message. Also converts values to other types if specified.
                     * @param message ExportUserEventsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ExportUserEventsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ExportUserEventsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ExportUserEventsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ExportAnalyticsMetricsRequest. */
                interface IExportAnalyticsMetricsRequest {

                    /** ExportAnalyticsMetricsRequest catalog */
                    catalog?: (string|null);

                    /** ExportAnalyticsMetricsRequest outputConfig */
                    outputConfig?: (google.cloud.retail.v2alpha.IOutputConfig|null);

                    /** ExportAnalyticsMetricsRequest filter */
                    filter?: (string|null);
                }

                /** Represents an ExportAnalyticsMetricsRequest. */
                class ExportAnalyticsMetricsRequest implements IExportAnalyticsMetricsRequest {

                    /**
                     * Constructs a new ExportAnalyticsMetricsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IExportAnalyticsMetricsRequest);

                    /** ExportAnalyticsMetricsRequest catalog. */
                    public catalog: string;

                    /** ExportAnalyticsMetricsRequest outputConfig. */
                    public outputConfig?: (google.cloud.retail.v2alpha.IOutputConfig|null);

                    /** ExportAnalyticsMetricsRequest filter. */
                    public filter: string;

                    /**
                     * Creates a new ExportAnalyticsMetricsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ExportAnalyticsMetricsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IExportAnalyticsMetricsRequest): google.cloud.retail.v2alpha.ExportAnalyticsMetricsRequest;

                    /**
                     * Encodes the specified ExportAnalyticsMetricsRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.ExportAnalyticsMetricsRequest.verify|verify} messages.
                     * @param message ExportAnalyticsMetricsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IExportAnalyticsMetricsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ExportAnalyticsMetricsRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ExportAnalyticsMetricsRequest.verify|verify} messages.
                     * @param message ExportAnalyticsMetricsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IExportAnalyticsMetricsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ExportAnalyticsMetricsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ExportAnalyticsMetricsRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ExportAnalyticsMetricsRequest;

                    /**
                     * Decodes an ExportAnalyticsMetricsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ExportAnalyticsMetricsRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.ExportAnalyticsMetricsRequest;

                    /**
                     * Verifies an ExportAnalyticsMetricsRequest message.
                     * @param message Plain 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 ExportAnalyticsMetricsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ExportAnalyticsMetricsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ExportAnalyticsMetricsRequest;

                    /**
                     * Creates a plain object from an ExportAnalyticsMetricsRequest message. Also converts values to other types if specified.
                     * @param message ExportAnalyticsMetricsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ExportAnalyticsMetricsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ExportAnalyticsMetricsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ExportAnalyticsMetricsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ExportMetadata. */
                interface IExportMetadata {

                    /** ExportMetadata createTime */
                    createTime?: (google.protobuf.ITimestamp|null);

                    /** ExportMetadata updateTime */
                    updateTime?: (google.protobuf.ITimestamp|null);
                }

                /** Represents an ExportMetadata. */
                class ExportMetadata implements IExportMetadata {

                    /**
                     * Constructs a new ExportMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IExportMetadata);

                    /** ExportMetadata createTime. */
                    public createTime?: (google.protobuf.ITimestamp|null);

                    /** ExportMetadata updateTime. */
                    public updateTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * Creates a new ExportMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ExportMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IExportMetadata): google.cloud.retail.v2alpha.ExportMetadata;

                    /**
                     * Encodes the specified ExportMetadata message. Does not implicitly {@link google.cloud.retail.v2alpha.ExportMetadata.verify|verify} messages.
                     * @param message ExportMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IExportMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ExportMetadata message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ExportMetadata.verify|verify} messages.
                     * @param message ExportMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IExportMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ExportMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ExportMetadata
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ExportMetadata;

                    /**
                     * Decodes an ExportMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ExportMetadata
                     * @throws {Error} If the payload 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.retail.v2alpha.ExportMetadata;

                    /**
                     * Verifies an ExportMetadata message.
                     * @param message Plain 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 ExportMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ExportMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ExportMetadata;

                    /**
                     * Creates a plain object from an ExportMetadata message. Also converts values to other types if specified.
                     * @param message ExportMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ExportMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ExportMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ExportMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ExportProductsResponse. */
                interface IExportProductsResponse {

                    /** ExportProductsResponse errorSamples */
                    errorSamples?: (google.rpc.IStatus[]|null);

                    /** ExportProductsResponse errorsConfig */
                    errorsConfig?: (google.cloud.retail.v2alpha.IExportErrorsConfig|null);

                    /** ExportProductsResponse outputResult */
                    outputResult?: (google.cloud.retail.v2alpha.IOutputResult|null);
                }

                /** Represents an ExportProductsResponse. */
                class ExportProductsResponse implements IExportProductsResponse {

                    /**
                     * Constructs a new ExportProductsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IExportProductsResponse);

                    /** ExportProductsResponse errorSamples. */
                    public errorSamples: google.rpc.IStatus[];

                    /** ExportProductsResponse errorsConfig. */
                    public errorsConfig?: (google.cloud.retail.v2alpha.IExportErrorsConfig|null);

                    /** ExportProductsResponse outputResult. */
                    public outputResult?: (google.cloud.retail.v2alpha.IOutputResult|null);

                    /**
                     * Creates a new ExportProductsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ExportProductsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IExportProductsResponse): google.cloud.retail.v2alpha.ExportProductsResponse;

                    /**
                     * Encodes the specified ExportProductsResponse message. Does not implicitly {@link google.cloud.retail.v2alpha.ExportProductsResponse.verify|verify} messages.
                     * @param message ExportProductsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IExportProductsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ExportProductsResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ExportProductsResponse.verify|verify} messages.
                     * @param message ExportProductsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IExportProductsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ExportProductsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ExportProductsResponse
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ExportProductsResponse;

                    /**
                     * Decodes an ExportProductsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ExportProductsResponse
                     * @throws {Error} If the payload 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.retail.v2alpha.ExportProductsResponse;

                    /**
                     * Verifies an ExportProductsResponse message.
                     * @param message Plain 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 ExportProductsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ExportProductsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ExportProductsResponse;

                    /**
                     * Creates a plain object from an ExportProductsResponse message. Also converts values to other types if specified.
                     * @param message ExportProductsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ExportProductsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ExportProductsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ExportProductsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ExportUserEventsResponse. */
                interface IExportUserEventsResponse {

                    /** ExportUserEventsResponse errorSamples */
                    errorSamples?: (google.rpc.IStatus[]|null);

                    /** ExportUserEventsResponse errorsConfig */
                    errorsConfig?: (google.cloud.retail.v2alpha.IExportErrorsConfig|null);

                    /** ExportUserEventsResponse outputResult */
                    outputResult?: (google.cloud.retail.v2alpha.IOutputResult|null);
                }

                /** Represents an ExportUserEventsResponse. */
                class ExportUserEventsResponse implements IExportUserEventsResponse {

                    /**
                     * Constructs a new ExportUserEventsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IExportUserEventsResponse);

                    /** ExportUserEventsResponse errorSamples. */
                    public errorSamples: google.rpc.IStatus[];

                    /** ExportUserEventsResponse errorsConfig. */
                    public errorsConfig?: (google.cloud.retail.v2alpha.IExportErrorsConfig|null);

                    /** ExportUserEventsResponse outputResult. */
                    public outputResult?: (google.cloud.retail.v2alpha.IOutputResult|null);

                    /**
                     * Creates a new ExportUserEventsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ExportUserEventsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IExportUserEventsResponse): google.cloud.retail.v2alpha.ExportUserEventsResponse;

                    /**
                     * Encodes the specified ExportUserEventsResponse message. Does not implicitly {@link google.cloud.retail.v2alpha.ExportUserEventsResponse.verify|verify} messages.
                     * @param message ExportUserEventsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IExportUserEventsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ExportUserEventsResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ExportUserEventsResponse.verify|verify} messages.
                     * @param message ExportUserEventsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IExportUserEventsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ExportUserEventsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ExportUserEventsResponse
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ExportUserEventsResponse;

                    /**
                     * Decodes an ExportUserEventsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ExportUserEventsResponse
                     * @throws {Error} If the payload 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.retail.v2alpha.ExportUserEventsResponse;

                    /**
                     * Verifies an ExportUserEventsResponse message.
                     * @param message Plain 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 ExportUserEventsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ExportUserEventsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ExportUserEventsResponse;

                    /**
                     * Creates a plain object from an ExportUserEventsResponse message. Also converts values to other types if specified.
                     * @param message ExportUserEventsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ExportUserEventsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ExportUserEventsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ExportUserEventsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ExportAnalyticsMetricsResponse. */
                interface IExportAnalyticsMetricsResponse {

                    /** ExportAnalyticsMetricsResponse errorSamples */
                    errorSamples?: (google.rpc.IStatus[]|null);

                    /** ExportAnalyticsMetricsResponse errorsConfig */
                    errorsConfig?: (google.cloud.retail.v2alpha.IExportErrorsConfig|null);

                    /** ExportAnalyticsMetricsResponse outputResult */
                    outputResult?: (google.cloud.retail.v2alpha.IOutputResult|null);
                }

                /** Represents an ExportAnalyticsMetricsResponse. */
                class ExportAnalyticsMetricsResponse implements IExportAnalyticsMetricsResponse {

                    /**
                     * Constructs a new ExportAnalyticsMetricsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IExportAnalyticsMetricsResponse);

                    /** ExportAnalyticsMetricsResponse errorSamples. */
                    public errorSamples: google.rpc.IStatus[];

                    /** ExportAnalyticsMetricsResponse errorsConfig. */
                    public errorsConfig?: (google.cloud.retail.v2alpha.IExportErrorsConfig|null);

                    /** ExportAnalyticsMetricsResponse outputResult. */
                    public outputResult?: (google.cloud.retail.v2alpha.IOutputResult|null);

                    /**
                     * Creates a new ExportAnalyticsMetricsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ExportAnalyticsMetricsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IExportAnalyticsMetricsResponse): google.cloud.retail.v2alpha.ExportAnalyticsMetricsResponse;

                    /**
                     * Encodes the specified ExportAnalyticsMetricsResponse message. Does not implicitly {@link google.cloud.retail.v2alpha.ExportAnalyticsMetricsResponse.verify|verify} messages.
                     * @param message ExportAnalyticsMetricsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IExportAnalyticsMetricsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ExportAnalyticsMetricsResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ExportAnalyticsMetricsResponse.verify|verify} messages.
                     * @param message ExportAnalyticsMetricsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IExportAnalyticsMetricsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ExportAnalyticsMetricsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ExportAnalyticsMetricsResponse
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ExportAnalyticsMetricsResponse;

                    /**
                     * Decodes an ExportAnalyticsMetricsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ExportAnalyticsMetricsResponse
                     * @throws {Error} If the payload 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.retail.v2alpha.ExportAnalyticsMetricsResponse;

                    /**
                     * Verifies an ExportAnalyticsMetricsResponse message.
                     * @param message Plain 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 ExportAnalyticsMetricsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ExportAnalyticsMetricsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ExportAnalyticsMetricsResponse;

                    /**
                     * Creates a plain object from an ExportAnalyticsMetricsResponse message. Also converts values to other types if specified.
                     * @param message ExportAnalyticsMetricsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ExportAnalyticsMetricsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ExportAnalyticsMetricsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ExportAnalyticsMetricsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an OutputResult. */
                interface IOutputResult {

                    /** OutputResult bigqueryResult */
                    bigqueryResult?: (google.cloud.retail.v2alpha.IBigQueryOutputResult[]|null);

                    /** OutputResult gcsResult */
                    gcsResult?: (google.cloud.retail.v2alpha.IGcsOutputResult[]|null);
                }

                /** Represents an OutputResult. */
                class OutputResult implements IOutputResult {

                    /**
                     * Constructs a new OutputResult.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IOutputResult);

                    /** OutputResult bigqueryResult. */
                    public bigqueryResult: google.cloud.retail.v2alpha.IBigQueryOutputResult[];

                    /** OutputResult gcsResult. */
                    public gcsResult: google.cloud.retail.v2alpha.IGcsOutputResult[];

                    /**
                     * Creates a new OutputResult instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns OutputResult instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IOutputResult): google.cloud.retail.v2alpha.OutputResult;

                    /**
                     * Encodes the specified OutputResult message. Does not implicitly {@link google.cloud.retail.v2alpha.OutputResult.verify|verify} messages.
                     * @param message OutputResult message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IOutputResult, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified OutputResult message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.OutputResult.verify|verify} messages.
                     * @param message OutputResult message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IOutputResult, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an OutputResult message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns OutputResult
                     * @throws {Error} If the payload is not 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.retail.v2alpha.OutputResult;

                    /**
                     * Decodes an OutputResult message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns OutputResult
                     * @throws {Error} If the payload 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.retail.v2alpha.OutputResult;

                    /**
                     * Verifies an OutputResult message.
                     * @param message Plain 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 OutputResult message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns OutputResult
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.OutputResult;

                    /**
                     * Creates a plain object from an OutputResult message. Also converts values to other types if specified.
                     * @param message OutputResult
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.OutputResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this OutputResult to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for OutputResult
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a BigQueryOutputResult. */
                interface IBigQueryOutputResult {

                    /** BigQueryOutputResult datasetId */
                    datasetId?: (string|null);

                    /** BigQueryOutputResult tableId */
                    tableId?: (string|null);
                }

                /** Represents a BigQueryOutputResult. */
                class BigQueryOutputResult implements IBigQueryOutputResult {

                    /**
                     * Constructs a new BigQueryOutputResult.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IBigQueryOutputResult);

                    /** BigQueryOutputResult datasetId. */
                    public datasetId: string;

                    /** BigQueryOutputResult tableId. */
                    public tableId: string;

                    /**
                     * Creates a new BigQueryOutputResult instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns BigQueryOutputResult instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IBigQueryOutputResult): google.cloud.retail.v2alpha.BigQueryOutputResult;

                    /**
                     * Encodes the specified BigQueryOutputResult message. Does not implicitly {@link google.cloud.retail.v2alpha.BigQueryOutputResult.verify|verify} messages.
                     * @param message BigQueryOutputResult message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IBigQueryOutputResult, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified BigQueryOutputResult message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.BigQueryOutputResult.verify|verify} messages.
                     * @param message BigQueryOutputResult message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IBigQueryOutputResult, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a BigQueryOutputResult message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns BigQueryOutputResult
                     * @throws {Error} If the payload is not 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.retail.v2alpha.BigQueryOutputResult;

                    /**
                     * Decodes a BigQueryOutputResult message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns BigQueryOutputResult
                     * @throws {Error} If the payload 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.retail.v2alpha.BigQueryOutputResult;

                    /**
                     * Verifies a BigQueryOutputResult message.
                     * @param message Plain 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 BigQueryOutputResult message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns BigQueryOutputResult
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.BigQueryOutputResult;

                    /**
                     * Creates a plain object from a BigQueryOutputResult message. Also converts values to other types if specified.
                     * @param message BigQueryOutputResult
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.BigQueryOutputResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this BigQueryOutputResult to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for BigQueryOutputResult
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GcsOutputResult. */
                interface IGcsOutputResult {

                    /** GcsOutputResult outputUri */
                    outputUri?: (string|null);
                }

                /** Represents a GcsOutputResult. */
                class GcsOutputResult implements IGcsOutputResult {

                    /**
                     * Constructs a new GcsOutputResult.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IGcsOutputResult);

                    /** GcsOutputResult outputUri. */
                    public outputUri: string;

                    /**
                     * Creates a new GcsOutputResult instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GcsOutputResult instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IGcsOutputResult): google.cloud.retail.v2alpha.GcsOutputResult;

                    /**
                     * Encodes the specified GcsOutputResult message. Does not implicitly {@link google.cloud.retail.v2alpha.GcsOutputResult.verify|verify} messages.
                     * @param message GcsOutputResult message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IGcsOutputResult, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GcsOutputResult message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.GcsOutputResult.verify|verify} messages.
                     * @param message GcsOutputResult message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IGcsOutputResult, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GcsOutputResult message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GcsOutputResult
                     * @throws {Error} If the payload is not 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.retail.v2alpha.GcsOutputResult;

                    /**
                     * Decodes a GcsOutputResult message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GcsOutputResult
                     * @throws {Error} If the payload 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.retail.v2alpha.GcsOutputResult;

                    /**
                     * Verifies a GcsOutputResult message.
                     * @param message Plain 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 GcsOutputResult message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GcsOutputResult
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.GcsOutputResult;

                    /**
                     * Creates a plain object from a GcsOutputResult message. Also converts values to other types if specified.
                     * @param message GcsOutputResult
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.GcsOutputResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GcsOutputResult to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GcsOutputResult
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** BranchView enum. */
                enum BranchView {
                    BRANCH_VIEW_UNSPECIFIED = 0,
                    BRANCH_VIEW_BASIC = 1,
                    BRANCH_VIEW_FULL = 2
                }

                /** Properties of a Branch. */
                interface IBranch {

                    /** Branch name */
                    name?: (string|null);

                    /** Branch displayName */
                    displayName?: (string|null);

                    /** Branch isDefault */
                    isDefault?: (boolean|null);

                    /** Branch lastProductImportTime */
                    lastProductImportTime?: (google.protobuf.ITimestamp|null);

                    /** Branch productCountStats */
                    productCountStats?: (google.cloud.retail.v2alpha.Branch.IProductCountStatistic[]|null);

                    /** Branch qualityMetrics */
                    qualityMetrics?: (google.cloud.retail.v2alpha.Branch.IQualityMetric[]|null);
                }

                /** Represents a Branch. */
                class Branch implements IBranch {

                    /**
                     * Constructs a new Branch.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IBranch);

                    /** Branch name. */
                    public name: string;

                    /** Branch displayName. */
                    public displayName: string;

                    /** Branch isDefault. */
                    public isDefault: boolean;

                    /** Branch lastProductImportTime. */
                    public lastProductImportTime?: (google.protobuf.ITimestamp|null);

                    /** Branch productCountStats. */
                    public productCountStats: google.cloud.retail.v2alpha.Branch.IProductCountStatistic[];

                    /** Branch qualityMetrics. */
                    public qualityMetrics: google.cloud.retail.v2alpha.Branch.IQualityMetric[];

                    /**
                     * Creates a new Branch instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Branch instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IBranch): google.cloud.retail.v2alpha.Branch;

                    /**
                     * Encodes the specified Branch message. Does not implicitly {@link google.cloud.retail.v2alpha.Branch.verify|verify} messages.
                     * @param message Branch message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IBranch, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Branch message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.Branch.verify|verify} messages.
                     * @param message Branch message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IBranch, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Branch message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Branch
                     * @throws {Error} If the payload is not 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.retail.v2alpha.Branch;

                    /**
                     * Decodes a Branch message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Branch
                     * @throws {Error} If the payload 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.retail.v2alpha.Branch;

                    /**
                     * Verifies a Branch message.
                     * @param message Plain 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 Branch message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Branch
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.Branch;

                    /**
                     * Creates a plain object from a Branch message. Also converts values to other types if specified.
                     * @param message Branch
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.Branch, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Branch to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Branch
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace Branch {

                    /** Properties of a ProductCountStatistic. */
                    interface IProductCountStatistic {

                        /** ProductCountStatistic scope */
                        scope?: (google.cloud.retail.v2alpha.Branch.ProductCountStatistic.ProductCountScope|keyof typeof google.cloud.retail.v2alpha.Branch.ProductCountStatistic.ProductCountScope|null);

                        /** ProductCountStatistic counts */
                        counts?: ({ [k: string]: (number|Long|string) }|null);
                    }

                    /** Represents a ProductCountStatistic. */
                    class ProductCountStatistic implements IProductCountStatistic {

                        /**
                         * Constructs a new ProductCountStatistic.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.Branch.IProductCountStatistic);

                        /** ProductCountStatistic scope. */
                        public scope: (google.cloud.retail.v2alpha.Branch.ProductCountStatistic.ProductCountScope|keyof typeof google.cloud.retail.v2alpha.Branch.ProductCountStatistic.ProductCountScope);

                        /** ProductCountStatistic counts. */
                        public counts: { [k: string]: (number|Long|string) };

                        /**
                         * Creates a new ProductCountStatistic instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductCountStatistic instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.Branch.IProductCountStatistic): google.cloud.retail.v2alpha.Branch.ProductCountStatistic;

                        /**
                         * Encodes the specified ProductCountStatistic message. Does not implicitly {@link google.cloud.retail.v2alpha.Branch.ProductCountStatistic.verify|verify} messages.
                         * @param message ProductCountStatistic message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.Branch.IProductCountStatistic, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductCountStatistic message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.Branch.ProductCountStatistic.verify|verify} messages.
                         * @param message ProductCountStatistic message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.Branch.IProductCountStatistic, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductCountStatistic message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProductCountStatistic
                         * @throws {Error} If the payload is not 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.retail.v2alpha.Branch.ProductCountStatistic;

                        /**
                         * Decodes a ProductCountStatistic message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductCountStatistic
                         * @throws {Error} If the payload 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.retail.v2alpha.Branch.ProductCountStatistic;

                        /**
                         * Verifies a ProductCountStatistic message.
                         * @param message Plain 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 ProductCountStatistic message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProductCountStatistic
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.Branch.ProductCountStatistic;

                        /**
                         * Creates a plain object from a ProductCountStatistic message. Also converts values to other types if specified.
                         * @param message ProductCountStatistic
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.Branch.ProductCountStatistic, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductCountStatistic to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProductCountStatistic
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ProductCountStatistic {

                        /** ProductCountScope enum. */
                        enum ProductCountScope {
                            PRODUCT_COUNT_SCOPE_UNSPECIFIED = 0,
                            ALL_PRODUCTS = 1,
                            LAST_24_HOUR_UPDATE = 2
                        }
                    }

                    /** Properties of a QualityMetric. */
                    interface IQualityMetric {

                        /** QualityMetric requirementKey */
                        requirementKey?: (string|null);

                        /** QualityMetric qualifiedProductCount */
                        qualifiedProductCount?: (number|null);

                        /** QualityMetric unqualifiedProductCount */
                        unqualifiedProductCount?: (number|null);

                        /** QualityMetric suggestedQualityPercentThreshold */
                        suggestedQualityPercentThreshold?: (number|null);

                        /** QualityMetric unqualifiedSampleProducts */
                        unqualifiedSampleProducts?: (google.cloud.retail.v2alpha.IProduct[]|null);
                    }

                    /** Represents a QualityMetric. */
                    class QualityMetric implements IQualityMetric {

                        /**
                         * Constructs a new QualityMetric.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.Branch.IQualityMetric);

                        /** QualityMetric requirementKey. */
                        public requirementKey: string;

                        /** QualityMetric qualifiedProductCount. */
                        public qualifiedProductCount: number;

                        /** QualityMetric unqualifiedProductCount. */
                        public unqualifiedProductCount: number;

                        /** QualityMetric suggestedQualityPercentThreshold. */
                        public suggestedQualityPercentThreshold: number;

                        /** QualityMetric unqualifiedSampleProducts. */
                        public unqualifiedSampleProducts: google.cloud.retail.v2alpha.IProduct[];

                        /**
                         * Creates a new QualityMetric instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns QualityMetric instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.Branch.IQualityMetric): google.cloud.retail.v2alpha.Branch.QualityMetric;

                        /**
                         * Encodes the specified QualityMetric message. Does not implicitly {@link google.cloud.retail.v2alpha.Branch.QualityMetric.verify|verify} messages.
                         * @param message QualityMetric message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.Branch.IQualityMetric, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified QualityMetric message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.Branch.QualityMetric.verify|verify} messages.
                         * @param message QualityMetric message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.Branch.IQualityMetric, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a QualityMetric message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns QualityMetric
                         * @throws {Error} If the payload is not 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.retail.v2alpha.Branch.QualityMetric;

                        /**
                         * Decodes a QualityMetric message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns QualityMetric
                         * @throws {Error} If the payload 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.retail.v2alpha.Branch.QualityMetric;

                        /**
                         * Verifies a QualityMetric message.
                         * @param message Plain 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 QualityMetric message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns QualityMetric
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.Branch.QualityMetric;

                        /**
                         * Creates a plain object from a QualityMetric message. Also converts values to other types if specified.
                         * @param message QualityMetric
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.Branch.QualityMetric, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this QualityMetric to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for QualityMetric
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of a Product. */
                interface IProduct {

                    /** Product expireTime */
                    expireTime?: (google.protobuf.ITimestamp|null);

                    /** Product ttl */
                    ttl?: (google.protobuf.IDuration|null);

                    /** Product name */
                    name?: (string|null);

                    /** Product id */
                    id?: (string|null);

                    /** Product type */
                    type?: (google.cloud.retail.v2alpha.Product.Type|keyof typeof google.cloud.retail.v2alpha.Product.Type|null);

                    /** Product primaryProductId */
                    primaryProductId?: (string|null);

                    /** Product collectionMemberIds */
                    collectionMemberIds?: (string[]|null);

                    /** Product gtin */
                    gtin?: (string|null);

                    /** Product categories */
                    categories?: (string[]|null);

                    /** Product title */
                    title?: (string|null);

                    /** Product brands */
                    brands?: (string[]|null);

                    /** Product description */
                    description?: (string|null);

                    /** Product languageCode */
                    languageCode?: (string|null);

                    /** Product attributes */
                    attributes?: ({ [k: string]: google.cloud.retail.v2alpha.ICustomAttribute }|null);

                    /** Product tags */
                    tags?: (string[]|null);

                    /** Product priceInfo */
                    priceInfo?: (google.cloud.retail.v2alpha.IPriceInfo|null);

                    /** Product rating */
                    rating?: (google.cloud.retail.v2alpha.IRating|null);

                    /** Product availableTime */
                    availableTime?: (google.protobuf.ITimestamp|null);

                    /** Product availability */
                    availability?: (google.cloud.retail.v2alpha.Product.Availability|keyof typeof google.cloud.retail.v2alpha.Product.Availability|null);

                    /** Product availableQuantity */
                    availableQuantity?: (google.protobuf.IInt32Value|null);

                    /** Product fulfillmentInfo */
                    fulfillmentInfo?: (google.cloud.retail.v2alpha.IFulfillmentInfo[]|null);

                    /** Product uri */
                    uri?: (string|null);

                    /** Product images */
                    images?: (google.cloud.retail.v2alpha.IImage[]|null);

                    /** Product audience */
                    audience?: (google.cloud.retail.v2alpha.IAudience|null);

                    /** Product colorInfo */
                    colorInfo?: (google.cloud.retail.v2alpha.IColorInfo|null);

                    /** Product sizes */
                    sizes?: (string[]|null);

                    /** Product materials */
                    materials?: (string[]|null);

                    /** Product patterns */
                    patterns?: (string[]|null);

                    /** Product conditions */
                    conditions?: (string[]|null);

                    /** Product promotions */
                    promotions?: (google.cloud.retail.v2alpha.IPromotion[]|null);

                    /** Product publishTime */
                    publishTime?: (google.protobuf.ITimestamp|null);

                    /** Product retrievableFields */
                    retrievableFields?: (google.protobuf.IFieldMask|null);

                    /** Product variants */
                    variants?: (google.cloud.retail.v2alpha.IProduct[]|null);

                    /** Product localInventories */
                    localInventories?: (google.cloud.retail.v2alpha.ILocalInventory[]|null);
                }

                /** Represents a Product. */
                class Product implements IProduct {

                    /**
                     * Constructs a new Product.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IProduct);

                    /** Product expireTime. */
                    public expireTime?: (google.protobuf.ITimestamp|null);

                    /** Product ttl. */
                    public ttl?: (google.protobuf.IDuration|null);

                    /** Product name. */
                    public name: string;

                    /** Product id. */
                    public id: string;

                    /** Product type. */
                    public type: (google.cloud.retail.v2alpha.Product.Type|keyof typeof google.cloud.retail.v2alpha.Product.Type);

                    /** Product primaryProductId. */
                    public primaryProductId: string;

                    /** Product collectionMemberIds. */
                    public collectionMemberIds: string[];

                    /** Product gtin. */
                    public gtin: string;

                    /** Product categories. */
                    public categories: string[];

                    /** Product title. */
                    public title: string;

                    /** Product brands. */
                    public brands: string[];

                    /** Product description. */
                    public description: string;

                    /** Product languageCode. */
                    public languageCode: string;

                    /** Product attributes. */
                    public attributes: { [k: string]: google.cloud.retail.v2alpha.ICustomAttribute };

                    /** Product tags. */
                    public tags: string[];

                    /** Product priceInfo. */
                    public priceInfo?: (google.cloud.retail.v2alpha.IPriceInfo|null);

                    /** Product rating. */
                    public rating?: (google.cloud.retail.v2alpha.IRating|null);

                    /** Product availableTime. */
                    public availableTime?: (google.protobuf.ITimestamp|null);

                    /** Product availability. */
                    public availability: (google.cloud.retail.v2alpha.Product.Availability|keyof typeof google.cloud.retail.v2alpha.Product.Availability);

                    /** Product availableQuantity. */
                    public availableQuantity?: (google.protobuf.IInt32Value|null);

                    /** Product fulfillmentInfo. */
                    public fulfillmentInfo: google.cloud.retail.v2alpha.IFulfillmentInfo[];

                    /** Product uri. */
                    public uri: string;

                    /** Product images. */
                    public images: google.cloud.retail.v2alpha.IImage[];

                    /** Product audience. */
                    public audience?: (google.cloud.retail.v2alpha.IAudience|null);

                    /** Product colorInfo. */
                    public colorInfo?: (google.cloud.retail.v2alpha.IColorInfo|null);

                    /** Product sizes. */
                    public sizes: string[];

                    /** Product materials. */
                    public materials: string[];

                    /** Product patterns. */
                    public patterns: string[];

                    /** Product conditions. */
                    public conditions: string[];

                    /** Product promotions. */
                    public promotions: google.cloud.retail.v2alpha.IPromotion[];

                    /** Product publishTime. */
                    public publishTime?: (google.protobuf.ITimestamp|null);

                    /** Product retrievableFields. */
                    public retrievableFields?: (google.protobuf.IFieldMask|null);

                    /** Product variants. */
                    public variants: google.cloud.retail.v2alpha.IProduct[];

                    /** Product localInventories. */
                    public localInventories: google.cloud.retail.v2alpha.ILocalInventory[];

                    /** Product expiration. */
                    public expiration?: ("expireTime"|"ttl");

                    /**
                     * Creates a new Product instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Product instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IProduct): google.cloud.retail.v2alpha.Product;

                    /**
                     * Encodes the specified Product message. Does not implicitly {@link google.cloud.retail.v2alpha.Product.verify|verify} messages.
                     * @param message Product message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IProduct, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Product message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.Product.verify|verify} messages.
                     * @param message Product message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IProduct, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Product message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Product
                     * @throws {Error} If the payload is not 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.retail.v2alpha.Product;

                    /**
                     * Decodes a Product message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Product
                     * @throws {Error} If the payload 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.retail.v2alpha.Product;

                    /**
                     * Verifies a Product message.
                     * @param message Plain 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 Product message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Product
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.Product;

                    /**
                     * Creates a plain object from a Product message. Also converts values to other types if specified.
                     * @param message Product
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.Product, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Product to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Product
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace Product {

                    /** Type enum. */
                    enum Type {
                        TYPE_UNSPECIFIED = 0,
                        PRIMARY = 1,
                        VARIANT = 2,
                        COLLECTION = 3
                    }

                    /** Availability enum. */
                    enum Availability {
                        AVAILABILITY_UNSPECIFIED = 0,
                        IN_STOCK = 1,
                        OUT_OF_STOCK = 2,
                        PREORDER = 3,
                        BACKORDER = 4
                    }
                }

                /** AttributeConfigLevel enum. */
                enum AttributeConfigLevel {
                    ATTRIBUTE_CONFIG_LEVEL_UNSPECIFIED = 0,
                    PRODUCT_LEVEL_ATTRIBUTE_CONFIG = 1,
                    CATALOG_LEVEL_ATTRIBUTE_CONFIG = 2
                }

                /** SolutionType enum. */
                enum SolutionType {
                    SOLUTION_TYPE_UNSPECIFIED = 0,
                    SOLUTION_TYPE_RECOMMENDATION = 1,
                    SOLUTION_TYPE_SEARCH = 2
                }

                /** RecommendationsFilteringOption enum. */
                enum RecommendationsFilteringOption {
                    RECOMMENDATIONS_FILTERING_OPTION_UNSPECIFIED = 0,
                    RECOMMENDATIONS_FILTERING_DISABLED = 1,
                    RECOMMENDATIONS_FILTERING_ENABLED = 3
                }

                /** SearchSolutionUseCase enum. */
                enum SearchSolutionUseCase {
                    SEARCH_SOLUTION_USE_CASE_UNSPECIFIED = 0,
                    SEARCH_SOLUTION_USE_CASE_SEARCH = 1,
                    SEARCH_SOLUTION_USE_CASE_BROWSE = 2
                }

                /** Properties of a Condition. */
                interface ICondition {

                    /** Condition queryTerms */
                    queryTerms?: (google.cloud.retail.v2alpha.Condition.IQueryTerm[]|null);

                    /** Condition activeTimeRange */
                    activeTimeRange?: (google.cloud.retail.v2alpha.Condition.ITimeRange[]|null);

                    /** Condition pageCategories */
                    pageCategories?: (string[]|null);
                }

                /** Represents a Condition. */
                class Condition implements ICondition {

                    /**
                     * Constructs a new Condition.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.ICondition);

                    /** Condition queryTerms. */
                    public queryTerms: google.cloud.retail.v2alpha.Condition.IQueryTerm[];

                    /** Condition activeTimeRange. */
                    public activeTimeRange: google.cloud.retail.v2alpha.Condition.ITimeRange[];

                    /** Condition pageCategories. */
                    public pageCategories: string[];

                    /**
                     * Creates a new Condition instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Condition instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.ICondition): google.cloud.retail.v2alpha.Condition;

                    /**
                     * Encodes the specified Condition message. Does not implicitly {@link google.cloud.retail.v2alpha.Condition.verify|verify} messages.
                     * @param message Condition message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.ICondition, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Condition message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.Condition.verify|verify} messages.
                     * @param message Condition message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.ICondition, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Condition message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Condition
                     * @throws {Error} If the payload is not 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.retail.v2alpha.Condition;

                    /**
                     * Decodes a Condition message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Condition
                     * @throws {Error} If the payload 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.retail.v2alpha.Condition;

                    /**
                     * Verifies a Condition message.
                     * @param message Plain 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 Condition message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Condition
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.Condition;

                    /**
                     * Creates a plain object from a Condition message. Also converts values to other types if specified.
                     * @param message Condition
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.Condition, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Condition to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Condition
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace Condition {

                    /** Properties of a QueryTerm. */
                    interface IQueryTerm {

                        /** QueryTerm value */
                        value?: (string|null);

                        /** QueryTerm fullMatch */
                        fullMatch?: (boolean|null);
                    }

                    /** Represents a QueryTerm. */
                    class QueryTerm implements IQueryTerm {

                        /**
                         * Constructs a new QueryTerm.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.Condition.IQueryTerm);

                        /** QueryTerm value. */
                        public value: string;

                        /** QueryTerm fullMatch. */
                        public fullMatch: boolean;

                        /**
                         * Creates a new QueryTerm instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns QueryTerm instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.Condition.IQueryTerm): google.cloud.retail.v2alpha.Condition.QueryTerm;

                        /**
                         * Encodes the specified QueryTerm message. Does not implicitly {@link google.cloud.retail.v2alpha.Condition.QueryTerm.verify|verify} messages.
                         * @param message QueryTerm message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.Condition.IQueryTerm, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified QueryTerm message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.Condition.QueryTerm.verify|verify} messages.
                         * @param message QueryTerm message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.Condition.IQueryTerm, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a QueryTerm message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns QueryTerm
                         * @throws {Error} If the payload is not 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.retail.v2alpha.Condition.QueryTerm;

                        /**
                         * Decodes a QueryTerm message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns QueryTerm
                         * @throws {Error} If the payload 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.retail.v2alpha.Condition.QueryTerm;

                        /**
                         * Verifies a QueryTerm message.
                         * @param message Plain 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 QueryTerm message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns QueryTerm
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.Condition.QueryTerm;

                        /**
                         * Creates a plain object from a QueryTerm message. Also converts values to other types if specified.
                         * @param message QueryTerm
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.Condition.QueryTerm, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this QueryTerm to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for QueryTerm
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a TimeRange. */
                    interface ITimeRange {

                        /** TimeRange startTime */
                        startTime?: (google.protobuf.ITimestamp|null);

                        /** TimeRange endTime */
                        endTime?: (google.protobuf.ITimestamp|null);
                    }

                    /** Represents a TimeRange. */
                    class TimeRange implements ITimeRange {

                        /**
                         * Constructs a new TimeRange.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.Condition.ITimeRange);

                        /** TimeRange startTime. */
                        public startTime?: (google.protobuf.ITimestamp|null);

                        /** TimeRange endTime. */
                        public endTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * Creates a new TimeRange instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TimeRange instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.Condition.ITimeRange): google.cloud.retail.v2alpha.Condition.TimeRange;

                        /**
                         * Encodes the specified TimeRange message. Does not implicitly {@link google.cloud.retail.v2alpha.Condition.TimeRange.verify|verify} messages.
                         * @param message TimeRange message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.Condition.ITimeRange, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TimeRange message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.Condition.TimeRange.verify|verify} messages.
                         * @param message TimeRange message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.Condition.ITimeRange, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TimeRange message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TimeRange
                         * @throws {Error} If the payload is not 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.retail.v2alpha.Condition.TimeRange;

                        /**
                         * Decodes a TimeRange message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TimeRange
                         * @throws {Error} If the payload 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.retail.v2alpha.Condition.TimeRange;

                        /**
                         * Verifies a TimeRange message.
                         * @param message Plain 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 TimeRange message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TimeRange
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.Condition.TimeRange;

                        /**
                         * Creates a plain object from a TimeRange message. Also converts values to other types if specified.
                         * @param message TimeRange
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.Condition.TimeRange, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TimeRange to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TimeRange
                         * @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 boostAction */
                    boostAction?: (google.cloud.retail.v2alpha.Rule.IBoostAction|null);

                    /** Rule redirectAction */
                    redirectAction?: (google.cloud.retail.v2alpha.Rule.IRedirectAction|null);

                    /** Rule onewaySynonymsAction */
                    onewaySynonymsAction?: (google.cloud.retail.v2alpha.Rule.IOnewaySynonymsAction|null);

                    /** Rule doNotAssociateAction */
                    doNotAssociateAction?: (google.cloud.retail.v2alpha.Rule.IDoNotAssociateAction|null);

                    /** Rule replacementAction */
                    replacementAction?: (google.cloud.retail.v2alpha.Rule.IReplacementAction|null);

                    /** Rule ignoreAction */
                    ignoreAction?: (google.cloud.retail.v2alpha.Rule.IIgnoreAction|null);

                    /** Rule filterAction */
                    filterAction?: (google.cloud.retail.v2alpha.Rule.IFilterAction|null);

                    /** Rule twowaySynonymsAction */
                    twowaySynonymsAction?: (google.cloud.retail.v2alpha.Rule.ITwowaySynonymsAction|null);

                    /** Rule forceReturnFacetAction */
                    forceReturnFacetAction?: (google.cloud.retail.v2alpha.Rule.IForceReturnFacetAction|null);

                    /** Rule removeFacetAction */
                    removeFacetAction?: (google.cloud.retail.v2alpha.Rule.IRemoveFacetAction|null);

                    /** Rule pinAction */
                    pinAction?: (google.cloud.retail.v2alpha.Rule.IPinAction|null);

                    /** Rule condition */
                    condition?: (google.cloud.retail.v2alpha.ICondition|null);
                }

                /** Represents a Rule. */
                class Rule implements IRule {

                    /**
                     * Constructs a new Rule.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IRule);

                    /** Rule boostAction. */
                    public boostAction?: (google.cloud.retail.v2alpha.Rule.IBoostAction|null);

                    /** Rule redirectAction. */
                    public redirectAction?: (google.cloud.retail.v2alpha.Rule.IRedirectAction|null);

                    /** Rule onewaySynonymsAction. */
                    public onewaySynonymsAction?: (google.cloud.retail.v2alpha.Rule.IOnewaySynonymsAction|null);

                    /** Rule doNotAssociateAction. */
                    public doNotAssociateAction?: (google.cloud.retail.v2alpha.Rule.IDoNotAssociateAction|null);

                    /** Rule replacementAction. */
                    public replacementAction?: (google.cloud.retail.v2alpha.Rule.IReplacementAction|null);

                    /** Rule ignoreAction. */
                    public ignoreAction?: (google.cloud.retail.v2alpha.Rule.IIgnoreAction|null);

                    /** Rule filterAction. */
                    public filterAction?: (google.cloud.retail.v2alpha.Rule.IFilterAction|null);

                    /** Rule twowaySynonymsAction. */
                    public twowaySynonymsAction?: (google.cloud.retail.v2alpha.Rule.ITwowaySynonymsAction|null);

                    /** Rule forceReturnFacetAction. */
                    public forceReturnFacetAction?: (google.cloud.retail.v2alpha.Rule.IForceReturnFacetAction|null);

                    /** Rule removeFacetAction. */
                    public removeFacetAction?: (google.cloud.retail.v2alpha.Rule.IRemoveFacetAction|null);

                    /** Rule pinAction. */
                    public pinAction?: (google.cloud.retail.v2alpha.Rule.IPinAction|null);

                    /** Rule condition. */
                    public condition?: (google.cloud.retail.v2alpha.ICondition|null);

                    /** Rule action. */
                    public action?: ("boostAction"|"redirectAction"|"onewaySynonymsAction"|"doNotAssociateAction"|"replacementAction"|"ignoreAction"|"filterAction"|"twowaySynonymsAction"|"forceReturnFacetAction"|"removeFacetAction"|"pinAction");

                    /**
                     * Creates a new Rule instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Rule instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IRule): google.cloud.retail.v2alpha.Rule;

                    /**
                     * Encodes the specified Rule message. Does not implicitly {@link google.cloud.retail.v2alpha.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.retail.v2alpha.IRule, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Rule message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.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.retail.v2alpha.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.retail.v2alpha.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.retail.v2alpha.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.retail.v2alpha.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.retail.v2alpha.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 {

                    /** Properties of a BoostAction. */
                    interface IBoostAction {

                        /** BoostAction boost */
                        boost?: (number|null);

                        /** BoostAction productsFilter */
                        productsFilter?: (string|null);
                    }

                    /** Represents a BoostAction. */
                    class BoostAction implements IBoostAction {

                        /**
                         * Constructs a new BoostAction.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.Rule.IBoostAction);

                        /** BoostAction boost. */
                        public boost: number;

                        /** BoostAction productsFilter. */
                        public productsFilter: string;

                        /**
                         * Creates a new BoostAction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BoostAction instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.Rule.IBoostAction): google.cloud.retail.v2alpha.Rule.BoostAction;

                        /**
                         * Encodes the specified BoostAction message. Does not implicitly {@link google.cloud.retail.v2alpha.Rule.BoostAction.verify|verify} messages.
                         * @param message BoostAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.Rule.IBoostAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BoostAction message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.Rule.BoostAction.verify|verify} messages.
                         * @param message BoostAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.Rule.IBoostAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BoostAction message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BoostAction
                         * @throws {Error} If the payload is not 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.retail.v2alpha.Rule.BoostAction;

                        /**
                         * Decodes a BoostAction message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BoostAction
                         * @throws {Error} If the payload 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.retail.v2alpha.Rule.BoostAction;

                        /**
                         * Verifies a BoostAction message.
                         * @param message Plain 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 BoostAction message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BoostAction
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.Rule.BoostAction;

                        /**
                         * Creates a plain object from a BoostAction message. Also converts values to other types if specified.
                         * @param message BoostAction
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.Rule.BoostAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BoostAction to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BoostAction
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a FilterAction. */
                    interface IFilterAction {

                        /** FilterAction filter */
                        filter?: (string|null);
                    }

                    /** Represents a FilterAction. */
                    class FilterAction implements IFilterAction {

                        /**
                         * Constructs a new FilterAction.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.Rule.IFilterAction);

                        /** FilterAction filter. */
                        public filter: string;

                        /**
                         * Creates a new FilterAction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FilterAction instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.Rule.IFilterAction): google.cloud.retail.v2alpha.Rule.FilterAction;

                        /**
                         * Encodes the specified FilterAction message. Does not implicitly {@link google.cloud.retail.v2alpha.Rule.FilterAction.verify|verify} messages.
                         * @param message FilterAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.Rule.IFilterAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FilterAction message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.Rule.FilterAction.verify|verify} messages.
                         * @param message FilterAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.Rule.IFilterAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FilterAction message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FilterAction
                         * @throws {Error} If the payload is not 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.retail.v2alpha.Rule.FilterAction;

                        /**
                         * Decodes a FilterAction message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FilterAction
                         * @throws {Error} If the payload 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.retail.v2alpha.Rule.FilterAction;

                        /**
                         * Verifies a FilterAction message.
                         * @param message Plain 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 FilterAction message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FilterAction
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.Rule.FilterAction;

                        /**
                         * Creates a plain object from a FilterAction message. Also converts values to other types if specified.
                         * @param message FilterAction
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.Rule.FilterAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FilterAction to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FilterAction
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a RedirectAction. */
                    interface IRedirectAction {

                        /** RedirectAction redirectUri */
                        redirectUri?: (string|null);
                    }

                    /** Represents a RedirectAction. */
                    class RedirectAction implements IRedirectAction {

                        /**
                         * Constructs a new RedirectAction.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.Rule.IRedirectAction);

                        /** RedirectAction redirectUri. */
                        public redirectUri: string;

                        /**
                         * Creates a new RedirectAction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RedirectAction instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.Rule.IRedirectAction): google.cloud.retail.v2alpha.Rule.RedirectAction;

                        /**
                         * Encodes the specified RedirectAction message. Does not implicitly {@link google.cloud.retail.v2alpha.Rule.RedirectAction.verify|verify} messages.
                         * @param message RedirectAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.Rule.IRedirectAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RedirectAction message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.Rule.RedirectAction.verify|verify} messages.
                         * @param message RedirectAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.Rule.IRedirectAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RedirectAction message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RedirectAction
                         * @throws {Error} If the payload is not 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.retail.v2alpha.Rule.RedirectAction;

                        /**
                         * Decodes a RedirectAction message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RedirectAction
                         * @throws {Error} If the payload 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.retail.v2alpha.Rule.RedirectAction;

                        /**
                         * Verifies a RedirectAction message.
                         * @param message Plain 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 RedirectAction message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RedirectAction
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.Rule.RedirectAction;

                        /**
                         * Creates a plain object from a RedirectAction message. Also converts values to other types if specified.
                         * @param message RedirectAction
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.Rule.RedirectAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RedirectAction to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RedirectAction
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a TwowaySynonymsAction. */
                    interface ITwowaySynonymsAction {

                        /** TwowaySynonymsAction synonyms */
                        synonyms?: (string[]|null);
                    }

                    /** Represents a TwowaySynonymsAction. */
                    class TwowaySynonymsAction implements ITwowaySynonymsAction {

                        /**
                         * Constructs a new TwowaySynonymsAction.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.Rule.ITwowaySynonymsAction);

                        /** TwowaySynonymsAction synonyms. */
                        public synonyms: string[];

                        /**
                         * Creates a new TwowaySynonymsAction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TwowaySynonymsAction instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.Rule.ITwowaySynonymsAction): google.cloud.retail.v2alpha.Rule.TwowaySynonymsAction;

                        /**
                         * Encodes the specified TwowaySynonymsAction message. Does not implicitly {@link google.cloud.retail.v2alpha.Rule.TwowaySynonymsAction.verify|verify} messages.
                         * @param message TwowaySynonymsAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.Rule.ITwowaySynonymsAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TwowaySynonymsAction message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.Rule.TwowaySynonymsAction.verify|verify} messages.
                         * @param message TwowaySynonymsAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.Rule.ITwowaySynonymsAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TwowaySynonymsAction message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TwowaySynonymsAction
                         * @throws {Error} If the payload is not 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.retail.v2alpha.Rule.TwowaySynonymsAction;

                        /**
                         * Decodes a TwowaySynonymsAction message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TwowaySynonymsAction
                         * @throws {Error} If the payload 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.retail.v2alpha.Rule.TwowaySynonymsAction;

                        /**
                         * Verifies a TwowaySynonymsAction message.
                         * @param message Plain 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 TwowaySynonymsAction message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TwowaySynonymsAction
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.Rule.TwowaySynonymsAction;

                        /**
                         * Creates a plain object from a TwowaySynonymsAction message. Also converts values to other types if specified.
                         * @param message TwowaySynonymsAction
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.Rule.TwowaySynonymsAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TwowaySynonymsAction to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TwowaySynonymsAction
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an OnewaySynonymsAction. */
                    interface IOnewaySynonymsAction {

                        /** OnewaySynonymsAction queryTerms */
                        queryTerms?: (string[]|null);

                        /** OnewaySynonymsAction synonyms */
                        synonyms?: (string[]|null);

                        /** OnewaySynonymsAction onewayTerms */
                        onewayTerms?: (string[]|null);
                    }

                    /** Represents an OnewaySynonymsAction. */
                    class OnewaySynonymsAction implements IOnewaySynonymsAction {

                        /**
                         * Constructs a new OnewaySynonymsAction.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.Rule.IOnewaySynonymsAction);

                        /** OnewaySynonymsAction queryTerms. */
                        public queryTerms: string[];

                        /** OnewaySynonymsAction synonyms. */
                        public synonyms: string[];

                        /** OnewaySynonymsAction onewayTerms. */
                        public onewayTerms: string[];

                        /**
                         * Creates a new OnewaySynonymsAction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns OnewaySynonymsAction instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.Rule.IOnewaySynonymsAction): google.cloud.retail.v2alpha.Rule.OnewaySynonymsAction;

                        /**
                         * Encodes the specified OnewaySynonymsAction message. Does not implicitly {@link google.cloud.retail.v2alpha.Rule.OnewaySynonymsAction.verify|verify} messages.
                         * @param message OnewaySynonymsAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.Rule.IOnewaySynonymsAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OnewaySynonymsAction message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.Rule.OnewaySynonymsAction.verify|verify} messages.
                         * @param message OnewaySynonymsAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.Rule.IOnewaySynonymsAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OnewaySynonymsAction message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns OnewaySynonymsAction
                         * @throws {Error} If the payload is not 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.retail.v2alpha.Rule.OnewaySynonymsAction;

                        /**
                         * Decodes an OnewaySynonymsAction message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns OnewaySynonymsAction
                         * @throws {Error} If the payload 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.retail.v2alpha.Rule.OnewaySynonymsAction;

                        /**
                         * Verifies an OnewaySynonymsAction message.
                         * @param message Plain 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 OnewaySynonymsAction message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns OnewaySynonymsAction
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.Rule.OnewaySynonymsAction;

                        /**
                         * Creates a plain object from an OnewaySynonymsAction message. Also converts values to other types if specified.
                         * @param message OnewaySynonymsAction
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.Rule.OnewaySynonymsAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OnewaySynonymsAction to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for OnewaySynonymsAction
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a DoNotAssociateAction. */
                    interface IDoNotAssociateAction {

                        /** DoNotAssociateAction queryTerms */
                        queryTerms?: (string[]|null);

                        /** DoNotAssociateAction doNotAssociateTerms */
                        doNotAssociateTerms?: (string[]|null);

                        /** DoNotAssociateAction terms */
                        terms?: (string[]|null);
                    }

                    /** Represents a DoNotAssociateAction. */
                    class DoNotAssociateAction implements IDoNotAssociateAction {

                        /**
                         * Constructs a new DoNotAssociateAction.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.Rule.IDoNotAssociateAction);

                        /** DoNotAssociateAction queryTerms. */
                        public queryTerms: string[];

                        /** DoNotAssociateAction doNotAssociateTerms. */
                        public doNotAssociateTerms: string[];

                        /** DoNotAssociateAction terms. */
                        public terms: string[];

                        /**
                         * Creates a new DoNotAssociateAction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DoNotAssociateAction instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.Rule.IDoNotAssociateAction): google.cloud.retail.v2alpha.Rule.DoNotAssociateAction;

                        /**
                         * Encodes the specified DoNotAssociateAction message. Does not implicitly {@link google.cloud.retail.v2alpha.Rule.DoNotAssociateAction.verify|verify} messages.
                         * @param message DoNotAssociateAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.Rule.IDoNotAssociateAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DoNotAssociateAction message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.Rule.DoNotAssociateAction.verify|verify} messages.
                         * @param message DoNotAssociateAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.Rule.IDoNotAssociateAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DoNotAssociateAction message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DoNotAssociateAction
                         * @throws {Error} If the payload is not 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.retail.v2alpha.Rule.DoNotAssociateAction;

                        /**
                         * Decodes a DoNotAssociateAction message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DoNotAssociateAction
                         * @throws {Error} If the payload 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.retail.v2alpha.Rule.DoNotAssociateAction;

                        /**
                         * Verifies a DoNotAssociateAction message.
                         * @param message Plain 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 DoNotAssociateAction message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DoNotAssociateAction
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.Rule.DoNotAssociateAction;

                        /**
                         * Creates a plain object from a DoNotAssociateAction message. Also converts values to other types if specified.
                         * @param message DoNotAssociateAction
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.Rule.DoNotAssociateAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DoNotAssociateAction to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DoNotAssociateAction
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ReplacementAction. */
                    interface IReplacementAction {

                        /** ReplacementAction queryTerms */
                        queryTerms?: (string[]|null);

                        /** ReplacementAction replacementTerm */
                        replacementTerm?: (string|null);

                        /** ReplacementAction term */
                        term?: (string|null);
                    }

                    /** Represents a ReplacementAction. */
                    class ReplacementAction implements IReplacementAction {

                        /**
                         * Constructs a new ReplacementAction.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.Rule.IReplacementAction);

                        /** ReplacementAction queryTerms. */
                        public queryTerms: string[];

                        /** ReplacementAction replacementTerm. */
                        public replacementTerm: string;

                        /** ReplacementAction term. */
                        public term: string;

                        /**
                         * Creates a new ReplacementAction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ReplacementAction instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.Rule.IReplacementAction): google.cloud.retail.v2alpha.Rule.ReplacementAction;

                        /**
                         * Encodes the specified ReplacementAction message. Does not implicitly {@link google.cloud.retail.v2alpha.Rule.ReplacementAction.verify|verify} messages.
                         * @param message ReplacementAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.Rule.IReplacementAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ReplacementAction message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.Rule.ReplacementAction.verify|verify} messages.
                         * @param message ReplacementAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.Rule.IReplacementAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ReplacementAction message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ReplacementAction
                         * @throws {Error} If the payload is not 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.retail.v2alpha.Rule.ReplacementAction;

                        /**
                         * Decodes a ReplacementAction message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ReplacementAction
                         * @throws {Error} If the payload 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.retail.v2alpha.Rule.ReplacementAction;

                        /**
                         * Verifies a ReplacementAction message.
                         * @param message Plain 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 ReplacementAction message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ReplacementAction
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.Rule.ReplacementAction;

                        /**
                         * Creates a plain object from a ReplacementAction message. Also converts values to other types if specified.
                         * @param message ReplacementAction
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.Rule.ReplacementAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ReplacementAction to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ReplacementAction
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an IgnoreAction. */
                    interface IIgnoreAction {

                        /** IgnoreAction ignoreTerms */
                        ignoreTerms?: (string[]|null);
                    }

                    /** Represents an IgnoreAction. */
                    class IgnoreAction implements IIgnoreAction {

                        /**
                         * Constructs a new IgnoreAction.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.Rule.IIgnoreAction);

                        /** IgnoreAction ignoreTerms. */
                        public ignoreTerms: string[];

                        /**
                         * Creates a new IgnoreAction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns IgnoreAction instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.Rule.IIgnoreAction): google.cloud.retail.v2alpha.Rule.IgnoreAction;

                        /**
                         * Encodes the specified IgnoreAction message. Does not implicitly {@link google.cloud.retail.v2alpha.Rule.IgnoreAction.verify|verify} messages.
                         * @param message IgnoreAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.Rule.IIgnoreAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified IgnoreAction message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.Rule.IgnoreAction.verify|verify} messages.
                         * @param message IgnoreAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.Rule.IIgnoreAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an IgnoreAction message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns IgnoreAction
                         * @throws {Error} If the payload is not 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.retail.v2alpha.Rule.IgnoreAction;

                        /**
                         * Decodes an IgnoreAction message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns IgnoreAction
                         * @throws {Error} If the payload 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.retail.v2alpha.Rule.IgnoreAction;

                        /**
                         * Verifies an IgnoreAction message.
                         * @param message Plain 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 IgnoreAction message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns IgnoreAction
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.Rule.IgnoreAction;

                        /**
                         * Creates a plain object from an IgnoreAction message. Also converts values to other types if specified.
                         * @param message IgnoreAction
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.Rule.IgnoreAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this IgnoreAction to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for IgnoreAction
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ForceReturnFacetAction. */
                    interface IForceReturnFacetAction {

                        /** ForceReturnFacetAction facetPositionAdjustments */
                        facetPositionAdjustments?: (google.cloud.retail.v2alpha.Rule.ForceReturnFacetAction.IFacetPositionAdjustment[]|null);
                    }

                    /** Represents a ForceReturnFacetAction. */
                    class ForceReturnFacetAction implements IForceReturnFacetAction {

                        /**
                         * Constructs a new ForceReturnFacetAction.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.Rule.IForceReturnFacetAction);

                        /** ForceReturnFacetAction facetPositionAdjustments. */
                        public facetPositionAdjustments: google.cloud.retail.v2alpha.Rule.ForceReturnFacetAction.IFacetPositionAdjustment[];

                        /**
                         * Creates a new ForceReturnFacetAction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ForceReturnFacetAction instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.Rule.IForceReturnFacetAction): google.cloud.retail.v2alpha.Rule.ForceReturnFacetAction;

                        /**
                         * Encodes the specified ForceReturnFacetAction message. Does not implicitly {@link google.cloud.retail.v2alpha.Rule.ForceReturnFacetAction.verify|verify} messages.
                         * @param message ForceReturnFacetAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.Rule.IForceReturnFacetAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ForceReturnFacetAction message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.Rule.ForceReturnFacetAction.verify|verify} messages.
                         * @param message ForceReturnFacetAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.Rule.IForceReturnFacetAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ForceReturnFacetAction message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ForceReturnFacetAction
                         * @throws {Error} If the payload is not 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.retail.v2alpha.Rule.ForceReturnFacetAction;

                        /**
                         * Decodes a ForceReturnFacetAction message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ForceReturnFacetAction
                         * @throws {Error} If the payload 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.retail.v2alpha.Rule.ForceReturnFacetAction;

                        /**
                         * Verifies a ForceReturnFacetAction message.
                         * @param message Plain 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 ForceReturnFacetAction message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ForceReturnFacetAction
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.Rule.ForceReturnFacetAction;

                        /**
                         * Creates a plain object from a ForceReturnFacetAction message. Also converts values to other types if specified.
                         * @param message ForceReturnFacetAction
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.Rule.ForceReturnFacetAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ForceReturnFacetAction to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ForceReturnFacetAction
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ForceReturnFacetAction {

                        /** Properties of a FacetPositionAdjustment. */
                        interface IFacetPositionAdjustment {

                            /** FacetPositionAdjustment attributeName */
                            attributeName?: (string|null);

                            /** FacetPositionAdjustment position */
                            position?: (number|null);
                        }

                        /** Represents a FacetPositionAdjustment. */
                        class FacetPositionAdjustment implements IFacetPositionAdjustment {

                            /**
                             * Constructs a new FacetPositionAdjustment.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2alpha.Rule.ForceReturnFacetAction.IFacetPositionAdjustment);

                            /** FacetPositionAdjustment attributeName. */
                            public attributeName: string;

                            /** FacetPositionAdjustment position. */
                            public position: number;

                            /**
                             * Creates a new FacetPositionAdjustment instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns FacetPositionAdjustment instance
                             */
                            public static create(properties?: google.cloud.retail.v2alpha.Rule.ForceReturnFacetAction.IFacetPositionAdjustment): google.cloud.retail.v2alpha.Rule.ForceReturnFacetAction.FacetPositionAdjustment;

                            /**
                             * Encodes the specified FacetPositionAdjustment message. Does not implicitly {@link google.cloud.retail.v2alpha.Rule.ForceReturnFacetAction.FacetPositionAdjustment.verify|verify} messages.
                             * @param message FacetPositionAdjustment message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.retail.v2alpha.Rule.ForceReturnFacetAction.IFacetPositionAdjustment, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified FacetPositionAdjustment message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.Rule.ForceReturnFacetAction.FacetPositionAdjustment.verify|verify} messages.
                             * @param message FacetPositionAdjustment message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.retail.v2alpha.Rule.ForceReturnFacetAction.IFacetPositionAdjustment, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a FacetPositionAdjustment message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns FacetPositionAdjustment
                             * @throws {Error} If the payload is not 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.retail.v2alpha.Rule.ForceReturnFacetAction.FacetPositionAdjustment;

                            /**
                             * Decodes a FacetPositionAdjustment message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns FacetPositionAdjustment
                             * @throws {Error} If the payload 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.retail.v2alpha.Rule.ForceReturnFacetAction.FacetPositionAdjustment;

                            /**
                             * Verifies a FacetPositionAdjustment message.
                             * @param message Plain 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 FacetPositionAdjustment message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns FacetPositionAdjustment
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.Rule.ForceReturnFacetAction.FacetPositionAdjustment;

                            /**
                             * Creates a plain object from a FacetPositionAdjustment message. Also converts values to other types if specified.
                             * @param message FacetPositionAdjustment
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.retail.v2alpha.Rule.ForceReturnFacetAction.FacetPositionAdjustment, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this FacetPositionAdjustment to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for FacetPositionAdjustment
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a RemoveFacetAction. */
                    interface IRemoveFacetAction {

                        /** RemoveFacetAction attributeNames */
                        attributeNames?: (string[]|null);
                    }

                    /** Represents a RemoveFacetAction. */
                    class RemoveFacetAction implements IRemoveFacetAction {

                        /**
                         * Constructs a new RemoveFacetAction.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.Rule.IRemoveFacetAction);

                        /** RemoveFacetAction attributeNames. */
                        public attributeNames: string[];

                        /**
                         * Creates a new RemoveFacetAction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RemoveFacetAction instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.Rule.IRemoveFacetAction): google.cloud.retail.v2alpha.Rule.RemoveFacetAction;

                        /**
                         * Encodes the specified RemoveFacetAction message. Does not implicitly {@link google.cloud.retail.v2alpha.Rule.RemoveFacetAction.verify|verify} messages.
                         * @param message RemoveFacetAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.Rule.IRemoveFacetAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RemoveFacetAction message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.Rule.RemoveFacetAction.verify|verify} messages.
                         * @param message RemoveFacetAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.Rule.IRemoveFacetAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RemoveFacetAction message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RemoveFacetAction
                         * @throws {Error} If the payload is not 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.retail.v2alpha.Rule.RemoveFacetAction;

                        /**
                         * Decodes a RemoveFacetAction message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RemoveFacetAction
                         * @throws {Error} If the payload 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.retail.v2alpha.Rule.RemoveFacetAction;

                        /**
                         * Verifies a RemoveFacetAction message.
                         * @param message Plain 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 RemoveFacetAction message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RemoveFacetAction
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.Rule.RemoveFacetAction;

                        /**
                         * Creates a plain object from a RemoveFacetAction message. Also converts values to other types if specified.
                         * @param message RemoveFacetAction
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.Rule.RemoveFacetAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RemoveFacetAction to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RemoveFacetAction
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a PinAction. */
                    interface IPinAction {

                        /** PinAction pinMap */
                        pinMap?: ({ [k: string]: string }|null);
                    }

                    /** Represents a PinAction. */
                    class PinAction implements IPinAction {

                        /**
                         * Constructs a new PinAction.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.Rule.IPinAction);

                        /** PinAction pinMap. */
                        public pinMap: { [k: string]: string };

                        /**
                         * Creates a new PinAction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PinAction instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.Rule.IPinAction): google.cloud.retail.v2alpha.Rule.PinAction;

                        /**
                         * Encodes the specified PinAction message. Does not implicitly {@link google.cloud.retail.v2alpha.Rule.PinAction.verify|verify} messages.
                         * @param message PinAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.Rule.IPinAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PinAction message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.Rule.PinAction.verify|verify} messages.
                         * @param message PinAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.Rule.IPinAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PinAction message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PinAction
                         * @throws {Error} If the payload is not 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.retail.v2alpha.Rule.PinAction;

                        /**
                         * Decodes a PinAction message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PinAction
                         * @throws {Error} If the payload 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.retail.v2alpha.Rule.PinAction;

                        /**
                         * Verifies a PinAction message.
                         * @param message Plain 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 PinAction message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PinAction
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.Rule.PinAction;

                        /**
                         * Creates a plain object from a PinAction message. Also converts values to other types if specified.
                         * @param message PinAction
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.Rule.PinAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PinAction to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PinAction
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of an Audience. */
                interface IAudience {

                    /** Audience genders */
                    genders?: (string[]|null);

                    /** Audience ageGroups */
                    ageGroups?: (string[]|null);
                }

                /** Represents an Audience. */
                class Audience implements IAudience {

                    /**
                     * Constructs a new Audience.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IAudience);

                    /** Audience genders. */
                    public genders: string[];

                    /** Audience ageGroups. */
                    public ageGroups: string[];

                    /**
                     * Creates a new Audience instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Audience instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IAudience): google.cloud.retail.v2alpha.Audience;

                    /**
                     * Encodes the specified Audience message. Does not implicitly {@link google.cloud.retail.v2alpha.Audience.verify|verify} messages.
                     * @param message Audience message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IAudience, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Audience message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.Audience.verify|verify} messages.
                     * @param message Audience message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IAudience, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an Audience message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Audience
                     * @throws {Error} If the payload is not 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.retail.v2alpha.Audience;

                    /**
                     * Decodes an Audience message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Audience
                     * @throws {Error} If the payload 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.retail.v2alpha.Audience;

                    /**
                     * Verifies an Audience message.
                     * @param message Plain 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 Audience message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Audience
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.Audience;

                    /**
                     * Creates a plain object from an Audience message. Also converts values to other types if specified.
                     * @param message Audience
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.Audience, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Audience to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Audience
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ColorInfo. */
                interface IColorInfo {

                    /** ColorInfo colorFamilies */
                    colorFamilies?: (string[]|null);

                    /** ColorInfo colors */
                    colors?: (string[]|null);
                }

                /** Represents a ColorInfo. */
                class ColorInfo implements IColorInfo {

                    /**
                     * Constructs a new ColorInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IColorInfo);

                    /** ColorInfo colorFamilies. */
                    public colorFamilies: string[];

                    /** ColorInfo colors. */
                    public colors: string[];

                    /**
                     * Creates a new ColorInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ColorInfo instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IColorInfo): google.cloud.retail.v2alpha.ColorInfo;

                    /**
                     * Encodes the specified ColorInfo message. Does not implicitly {@link google.cloud.retail.v2alpha.ColorInfo.verify|verify} messages.
                     * @param message ColorInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IColorInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ColorInfo message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ColorInfo.verify|verify} messages.
                     * @param message ColorInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IColorInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ColorInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ColorInfo
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ColorInfo;

                    /**
                     * Decodes a ColorInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ColorInfo
                     * @throws {Error} If the payload 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.retail.v2alpha.ColorInfo;

                    /**
                     * Verifies a ColorInfo message.
                     * @param message Plain 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 ColorInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ColorInfo
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ColorInfo;

                    /**
                     * Creates a plain object from a ColorInfo message. Also converts values to other types if specified.
                     * @param message ColorInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ColorInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ColorInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ColorInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CustomAttribute. */
                interface ICustomAttribute {

                    /** CustomAttribute text */
                    text?: (string[]|null);

                    /** CustomAttribute numbers */
                    numbers?: (number[]|null);

                    /** CustomAttribute searchable */
                    searchable?: (boolean|null);

                    /** CustomAttribute indexable */
                    indexable?: (boolean|null);
                }

                /** Represents a CustomAttribute. */
                class CustomAttribute implements ICustomAttribute {

                    /**
                     * Constructs a new CustomAttribute.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.ICustomAttribute);

                    /** CustomAttribute text. */
                    public text: string[];

                    /** CustomAttribute numbers. */
                    public numbers: number[];

                    /** CustomAttribute searchable. */
                    public searchable?: (boolean|null);

                    /** CustomAttribute indexable. */
                    public indexable?: (boolean|null);

                    /**
                     * Creates a new CustomAttribute instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CustomAttribute instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.ICustomAttribute): google.cloud.retail.v2alpha.CustomAttribute;

                    /**
                     * Encodes the specified CustomAttribute message. Does not implicitly {@link google.cloud.retail.v2alpha.CustomAttribute.verify|verify} messages.
                     * @param message CustomAttribute message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.ICustomAttribute, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CustomAttribute message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.CustomAttribute.verify|verify} messages.
                     * @param message CustomAttribute message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.ICustomAttribute, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CustomAttribute message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CustomAttribute
                     * @throws {Error} If the payload is not 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.retail.v2alpha.CustomAttribute;

                    /**
                     * Decodes a CustomAttribute message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CustomAttribute
                     * @throws {Error} If the payload 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.retail.v2alpha.CustomAttribute;

                    /**
                     * Verifies a CustomAttribute message.
                     * @param message Plain 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 CustomAttribute message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CustomAttribute
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.CustomAttribute;

                    /**
                     * Creates a plain object from a CustomAttribute message. Also converts values to other types if specified.
                     * @param message CustomAttribute
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.CustomAttribute, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CustomAttribute to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CustomAttribute
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a FulfillmentInfo. */
                interface IFulfillmentInfo {

                    /** FulfillmentInfo type */
                    type?: (string|null);

                    /** FulfillmentInfo placeIds */
                    placeIds?: (string[]|null);
                }

                /** Represents a FulfillmentInfo. */
                class FulfillmentInfo implements IFulfillmentInfo {

                    /**
                     * Constructs a new FulfillmentInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IFulfillmentInfo);

                    /** FulfillmentInfo type. */
                    public type: string;

                    /** FulfillmentInfo placeIds. */
                    public placeIds: string[];

                    /**
                     * Creates a new FulfillmentInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns FulfillmentInfo instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IFulfillmentInfo): google.cloud.retail.v2alpha.FulfillmentInfo;

                    /**
                     * Encodes the specified FulfillmentInfo message. Does not implicitly {@link google.cloud.retail.v2alpha.FulfillmentInfo.verify|verify} messages.
                     * @param message FulfillmentInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IFulfillmentInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified FulfillmentInfo message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.FulfillmentInfo.verify|verify} messages.
                     * @param message FulfillmentInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IFulfillmentInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a FulfillmentInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns FulfillmentInfo
                     * @throws {Error} If the payload is not 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.retail.v2alpha.FulfillmentInfo;

                    /**
                     * Decodes a FulfillmentInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns FulfillmentInfo
                     * @throws {Error} If the payload 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.retail.v2alpha.FulfillmentInfo;

                    /**
                     * Verifies a FulfillmentInfo message.
                     * @param message Plain 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 FulfillmentInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns FulfillmentInfo
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.FulfillmentInfo;

                    /**
                     * Creates a plain object from a FulfillmentInfo message. Also converts values to other types if specified.
                     * @param message FulfillmentInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.FulfillmentInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this FulfillmentInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for FulfillmentInfo
                     * @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 uri */
                    uri?: (string|null);

                    /** Image height */
                    height?: (number|null);

                    /** Image width */
                    width?: (number|null);
                }

                /** Represents an Image. */
                class Image implements IImage {

                    /**
                     * Constructs a new Image.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IImage);

                    /** Image uri. */
                    public uri: string;

                    /** Image height. */
                    public height: number;

                    /** Image width. */
                    public width: number;

                    /**
                     * Creates a new Image instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Image instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IImage): google.cloud.retail.v2alpha.Image;

                    /**
                     * Encodes the specified Image message. Does not implicitly {@link google.cloud.retail.v2alpha.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.retail.v2alpha.IImage, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Image message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.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.retail.v2alpha.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.retail.v2alpha.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.retail.v2alpha.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.retail.v2alpha.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.retail.v2alpha.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 an Interval. */
                interface IInterval {

                    /** Interval minimum */
                    minimum?: (number|null);

                    /** Interval exclusiveMinimum */
                    exclusiveMinimum?: (number|null);

                    /** Interval maximum */
                    maximum?: (number|null);

                    /** Interval exclusiveMaximum */
                    exclusiveMaximum?: (number|null);
                }

                /** Represents an Interval. */
                class Interval implements IInterval {

                    /**
                     * Constructs a new Interval.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IInterval);

                    /** Interval minimum. */
                    public minimum?: (number|null);

                    /** Interval exclusiveMinimum. */
                    public exclusiveMinimum?: (number|null);

                    /** Interval maximum. */
                    public maximum?: (number|null);

                    /** Interval exclusiveMaximum. */
                    public exclusiveMaximum?: (number|null);

                    /** Interval min. */
                    public min?: ("minimum"|"exclusiveMinimum");

                    /** Interval max. */
                    public max?: ("maximum"|"exclusiveMaximum");

                    /**
                     * Creates a new Interval instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Interval instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IInterval): google.cloud.retail.v2alpha.Interval;

                    /**
                     * Encodes the specified Interval message. Does not implicitly {@link google.cloud.retail.v2alpha.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.cloud.retail.v2alpha.IInterval, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Interval message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.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.cloud.retail.v2alpha.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.cloud.retail.v2alpha.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.cloud.retail.v2alpha.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.cloud.retail.v2alpha.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.cloud.retail.v2alpha.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 a PriceInfo. */
                interface IPriceInfo {

                    /** PriceInfo currencyCode */
                    currencyCode?: (string|null);

                    /** PriceInfo price */
                    price?: (number|null);

                    /** PriceInfo originalPrice */
                    originalPrice?: (number|null);

                    /** PriceInfo cost */
                    cost?: (number|null);

                    /** PriceInfo priceEffectiveTime */
                    priceEffectiveTime?: (google.protobuf.ITimestamp|null);

                    /** PriceInfo priceExpireTime */
                    priceExpireTime?: (google.protobuf.ITimestamp|null);

                    /** PriceInfo priceRange */
                    priceRange?: (google.cloud.retail.v2alpha.PriceInfo.IPriceRange|null);
                }

                /** Represents a PriceInfo. */
                class PriceInfo implements IPriceInfo {

                    /**
                     * Constructs a new PriceInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IPriceInfo);

                    /** PriceInfo currencyCode. */
                    public currencyCode: string;

                    /** PriceInfo price. */
                    public price: number;

                    /** PriceInfo originalPrice. */
                    public originalPrice: number;

                    /** PriceInfo cost. */
                    public cost: number;

                    /** PriceInfo priceEffectiveTime. */
                    public priceEffectiveTime?: (google.protobuf.ITimestamp|null);

                    /** PriceInfo priceExpireTime. */
                    public priceExpireTime?: (google.protobuf.ITimestamp|null);

                    /** PriceInfo priceRange. */
                    public priceRange?: (google.cloud.retail.v2alpha.PriceInfo.IPriceRange|null);

                    /**
                     * Creates a new PriceInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PriceInfo instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IPriceInfo): google.cloud.retail.v2alpha.PriceInfo;

                    /**
                     * Encodes the specified PriceInfo message. Does not implicitly {@link google.cloud.retail.v2alpha.PriceInfo.verify|verify} messages.
                     * @param message PriceInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IPriceInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PriceInfo message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.PriceInfo.verify|verify} messages.
                     * @param message PriceInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IPriceInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PriceInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PriceInfo
                     * @throws {Error} If the payload is not 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.retail.v2alpha.PriceInfo;

                    /**
                     * Decodes a PriceInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PriceInfo
                     * @throws {Error} If the payload 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.retail.v2alpha.PriceInfo;

                    /**
                     * Verifies a PriceInfo message.
                     * @param message Plain 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 PriceInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PriceInfo
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.PriceInfo;

                    /**
                     * Creates a plain object from a PriceInfo message. Also converts values to other types if specified.
                     * @param message PriceInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.PriceInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PriceInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PriceInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace PriceInfo {

                    /** Properties of a PriceRange. */
                    interface IPriceRange {

                        /** PriceRange price */
                        price?: (google.cloud.retail.v2alpha.IInterval|null);

                        /** PriceRange originalPrice */
                        originalPrice?: (google.cloud.retail.v2alpha.IInterval|null);
                    }

                    /** Represents a PriceRange. */
                    class PriceRange implements IPriceRange {

                        /**
                         * Constructs a new PriceRange.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.PriceInfo.IPriceRange);

                        /** PriceRange price. */
                        public price?: (google.cloud.retail.v2alpha.IInterval|null);

                        /** PriceRange originalPrice. */
                        public originalPrice?: (google.cloud.retail.v2alpha.IInterval|null);

                        /**
                         * Creates a new PriceRange instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PriceRange instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.PriceInfo.IPriceRange): google.cloud.retail.v2alpha.PriceInfo.PriceRange;

                        /**
                         * Encodes the specified PriceRange message. Does not implicitly {@link google.cloud.retail.v2alpha.PriceInfo.PriceRange.verify|verify} messages.
                         * @param message PriceRange message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.PriceInfo.IPriceRange, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PriceRange message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.PriceInfo.PriceRange.verify|verify} messages.
                         * @param message PriceRange message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.PriceInfo.IPriceRange, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PriceRange message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PriceRange
                         * @throws {Error} If the payload is not 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.retail.v2alpha.PriceInfo.PriceRange;

                        /**
                         * Decodes a PriceRange message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PriceRange
                         * @throws {Error} If the payload 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.retail.v2alpha.PriceInfo.PriceRange;

                        /**
                         * Verifies a PriceRange message.
                         * @param message Plain 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 PriceRange message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PriceRange
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.PriceInfo.PriceRange;

                        /**
                         * Creates a plain object from a PriceRange message. Also converts values to other types if specified.
                         * @param message PriceRange
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.PriceInfo.PriceRange, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PriceRange to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PriceRange
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of a Rating. */
                interface IRating {

                    /** Rating ratingCount */
                    ratingCount?: (number|null);

                    /** Rating averageRating */
                    averageRating?: (number|null);

                    /** Rating ratingHistogram */
                    ratingHistogram?: (number[]|null);
                }

                /** Represents a Rating. */
                class Rating implements IRating {

                    /**
                     * Constructs a new Rating.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IRating);

                    /** Rating ratingCount. */
                    public ratingCount: number;

                    /** Rating averageRating. */
                    public averageRating: number;

                    /** Rating ratingHistogram. */
                    public ratingHistogram: number[];

                    /**
                     * Creates a new Rating instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Rating instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IRating): google.cloud.retail.v2alpha.Rating;

                    /**
                     * Encodes the specified Rating message. Does not implicitly {@link google.cloud.retail.v2alpha.Rating.verify|verify} messages.
                     * @param message Rating message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IRating, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Rating message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.Rating.verify|verify} messages.
                     * @param message Rating message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IRating, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Rating message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Rating
                     * @throws {Error} If the payload is not 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.retail.v2alpha.Rating;

                    /**
                     * Decodes a Rating message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Rating
                     * @throws {Error} If the payload 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.retail.v2alpha.Rating;

                    /**
                     * Verifies a Rating message.
                     * @param message Plain 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 Rating message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Rating
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.Rating;

                    /**
                     * Creates a plain object from a Rating message. Also converts values to other types if specified.
                     * @param message Rating
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.Rating, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Rating to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Rating
                     * @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 userId */
                    userId?: (string|null);

                    /** UserInfo ipAddress */
                    ipAddress?: (string|null);

                    /** UserInfo userAgent */
                    userAgent?: (string|null);

                    /** UserInfo directUserRequest */
                    directUserRequest?: (boolean|null);
                }

                /** Represents a UserInfo. */
                class UserInfo implements IUserInfo {

                    /**
                     * Constructs a new UserInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IUserInfo);

                    /** UserInfo userId. */
                    public userId: string;

                    /** UserInfo ipAddress. */
                    public ipAddress: string;

                    /** UserInfo userAgent. */
                    public userAgent: string;

                    /** UserInfo directUserRequest. */
                    public directUserRequest: boolean;

                    /**
                     * Creates a new UserInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UserInfo instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IUserInfo): google.cloud.retail.v2alpha.UserInfo;

                    /**
                     * Encodes the specified UserInfo message. Does not implicitly {@link google.cloud.retail.v2alpha.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.retail.v2alpha.IUserInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UserInfo message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.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.retail.v2alpha.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.retail.v2alpha.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.retail.v2alpha.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.retail.v2alpha.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.retail.v2alpha.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 a LocalInventory. */
                interface ILocalInventory {

                    /** LocalInventory placeId */
                    placeId?: (string|null);

                    /** LocalInventory priceInfo */
                    priceInfo?: (google.cloud.retail.v2alpha.IPriceInfo|null);

                    /** LocalInventory availability */
                    availability?: (google.cloud.retail.v2alpha.LocalInventory.Availability|keyof typeof google.cloud.retail.v2alpha.LocalInventory.Availability|null);

                    /** LocalInventory attributes */
                    attributes?: ({ [k: string]: google.cloud.retail.v2alpha.ICustomAttribute }|null);

                    /** LocalInventory fulfillmentTypes */
                    fulfillmentTypes?: (string[]|null);
                }

                /** Represents a LocalInventory. */
                class LocalInventory implements ILocalInventory {

                    /**
                     * Constructs a new LocalInventory.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.ILocalInventory);

                    /** LocalInventory placeId. */
                    public placeId: string;

                    /** LocalInventory priceInfo. */
                    public priceInfo?: (google.cloud.retail.v2alpha.IPriceInfo|null);

                    /** LocalInventory availability. */
                    public availability: (google.cloud.retail.v2alpha.LocalInventory.Availability|keyof typeof google.cloud.retail.v2alpha.LocalInventory.Availability);

                    /** LocalInventory attributes. */
                    public attributes: { [k: string]: google.cloud.retail.v2alpha.ICustomAttribute };

                    /** LocalInventory fulfillmentTypes. */
                    public fulfillmentTypes: string[];

                    /**
                     * Creates a new LocalInventory instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns LocalInventory instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.ILocalInventory): google.cloud.retail.v2alpha.LocalInventory;

                    /**
                     * Encodes the specified LocalInventory message. Does not implicitly {@link google.cloud.retail.v2alpha.LocalInventory.verify|verify} messages.
                     * @param message LocalInventory message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.ILocalInventory, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified LocalInventory message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.LocalInventory.verify|verify} messages.
                     * @param message LocalInventory message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.ILocalInventory, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a LocalInventory message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns LocalInventory
                     * @throws {Error} If the payload is not 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.retail.v2alpha.LocalInventory;

                    /**
                     * Decodes a LocalInventory message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns LocalInventory
                     * @throws {Error} If the payload 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.retail.v2alpha.LocalInventory;

                    /**
                     * Verifies a LocalInventory message.
                     * @param message Plain 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 LocalInventory message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns LocalInventory
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.LocalInventory;

                    /**
                     * Creates a plain object from a LocalInventory message. Also converts values to other types if specified.
                     * @param message LocalInventory
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.LocalInventory, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this LocalInventory to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for LocalInventory
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace LocalInventory {

                    /** Availability enum. */
                    enum Availability {
                        AVAILABILITY_UNSPECIFIED = 0,
                        IN_STOCK = 1,
                        OUT_OF_STOCK = 2,
                        PREORDER = 3,
                        BACKORDER = 4
                    }
                }

                /** Properties of a PinControlMetadata. */
                interface IPinControlMetadata {

                    /** PinControlMetadata allMatchedPins */
                    allMatchedPins?: ({ [k: string]: google.cloud.retail.v2alpha.PinControlMetadata.IProductPins }|null);

                    /** PinControlMetadata droppedPins */
                    droppedPins?: ({ [k: string]: google.cloud.retail.v2alpha.PinControlMetadata.IProductPins }|null);
                }

                /** Represents a PinControlMetadata. */
                class PinControlMetadata implements IPinControlMetadata {

                    /**
                     * Constructs a new PinControlMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IPinControlMetadata);

                    /** PinControlMetadata allMatchedPins. */
                    public allMatchedPins: { [k: string]: google.cloud.retail.v2alpha.PinControlMetadata.IProductPins };

                    /** PinControlMetadata droppedPins. */
                    public droppedPins: { [k: string]: google.cloud.retail.v2alpha.PinControlMetadata.IProductPins };

                    /**
                     * Creates a new PinControlMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PinControlMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IPinControlMetadata): google.cloud.retail.v2alpha.PinControlMetadata;

                    /**
                     * Encodes the specified PinControlMetadata message. Does not implicitly {@link google.cloud.retail.v2alpha.PinControlMetadata.verify|verify} messages.
                     * @param message PinControlMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IPinControlMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PinControlMetadata message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.PinControlMetadata.verify|verify} messages.
                     * @param message PinControlMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IPinControlMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PinControlMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PinControlMetadata
                     * @throws {Error} If the payload is not 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.retail.v2alpha.PinControlMetadata;

                    /**
                     * Decodes a PinControlMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PinControlMetadata
                     * @throws {Error} If the payload 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.retail.v2alpha.PinControlMetadata;

                    /**
                     * Verifies a PinControlMetadata message.
                     * @param message Plain 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 PinControlMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PinControlMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.PinControlMetadata;

                    /**
                     * Creates a plain object from a PinControlMetadata message. Also converts values to other types if specified.
                     * @param message PinControlMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.PinControlMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PinControlMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PinControlMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace PinControlMetadata {

                    /** Properties of a ProductPins. */
                    interface IProductPins {

                        /** ProductPins productId */
                        productId?: (string[]|null);
                    }

                    /** Represents a ProductPins. */
                    class ProductPins implements IProductPins {

                        /**
                         * Constructs a new ProductPins.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.PinControlMetadata.IProductPins);

                        /** ProductPins productId. */
                        public productId: string[];

                        /**
                         * Creates a new ProductPins instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductPins instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.PinControlMetadata.IProductPins): google.cloud.retail.v2alpha.PinControlMetadata.ProductPins;

                        /**
                         * Encodes the specified ProductPins message. Does not implicitly {@link google.cloud.retail.v2alpha.PinControlMetadata.ProductPins.verify|verify} messages.
                         * @param message ProductPins message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.PinControlMetadata.IProductPins, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductPins message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.PinControlMetadata.ProductPins.verify|verify} messages.
                         * @param message ProductPins message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.PinControlMetadata.IProductPins, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductPins message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProductPins
                         * @throws {Error} If the payload is not 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.retail.v2alpha.PinControlMetadata.ProductPins;

                        /**
                         * Decodes a ProductPins message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductPins
                         * @throws {Error} If the payload 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.retail.v2alpha.PinControlMetadata.ProductPins;

                        /**
                         * Verifies a ProductPins message.
                         * @param message Plain 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 ProductPins message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProductPins
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.PinControlMetadata.ProductPins;

                        /**
                         * Creates a plain object from a ProductPins message. Also converts values to other types if specified.
                         * @param message ProductPins
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.PinControlMetadata.ProductPins, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductPins to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProductPins
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of a StringList. */
                interface IStringList {

                    /** StringList values */
                    values?: (string[]|null);
                }

                /** Represents a StringList. */
                class StringList implements IStringList {

                    /**
                     * Constructs a new StringList.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IStringList);

                    /** StringList values. */
                    public values: string[];

                    /**
                     * Creates a new StringList instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns StringList instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IStringList): google.cloud.retail.v2alpha.StringList;

                    /**
                     * Encodes the specified StringList message. Does not implicitly {@link google.cloud.retail.v2alpha.StringList.verify|verify} messages.
                     * @param message StringList message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IStringList, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified StringList message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.StringList.verify|verify} messages.
                     * @param message StringList message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IStringList, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a StringList message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns StringList
                     * @throws {Error} If the payload is not 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.retail.v2alpha.StringList;

                    /**
                     * Decodes a StringList message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns StringList
                     * @throws {Error} If the payload 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.retail.v2alpha.StringList;

                    /**
                     * Verifies a StringList message.
                     * @param message Plain 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 StringList message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns StringList
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.StringList;

                    /**
                     * Creates a plain object from a StringList message. Also converts values to other types if specified.
                     * @param message StringList
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.StringList, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this StringList to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for StringList
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DoubleList. */
                interface IDoubleList {

                    /** DoubleList values */
                    values?: (number[]|null);
                }

                /** Represents a DoubleList. */
                class DoubleList implements IDoubleList {

                    /**
                     * Constructs a new DoubleList.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IDoubleList);

                    /** DoubleList values. */
                    public values: number[];

                    /**
                     * Creates a new DoubleList instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DoubleList instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IDoubleList): google.cloud.retail.v2alpha.DoubleList;

                    /**
                     * Encodes the specified DoubleList message. Does not implicitly {@link google.cloud.retail.v2alpha.DoubleList.verify|verify} messages.
                     * @param message DoubleList message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IDoubleList, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DoubleList message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.DoubleList.verify|verify} messages.
                     * @param message DoubleList message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IDoubleList, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DoubleList message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DoubleList
                     * @throws {Error} If the payload is not 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.retail.v2alpha.DoubleList;

                    /**
                     * Decodes a DoubleList message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DoubleList
                     * @throws {Error} If the payload 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.retail.v2alpha.DoubleList;

                    /**
                     * Verifies a DoubleList message.
                     * @param message Plain 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 DoubleList message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DoubleList
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.DoubleList;

                    /**
                     * Creates a plain object from a DoubleList message. Also converts values to other types if specified.
                     * @param message DoubleList
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.DoubleList, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DoubleList to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DoubleList
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a Promotion. */
                interface IPromotion {

                    /** Promotion promotionId */
                    promotionId?: (string|null);
                }

                /** Represents a Promotion. */
                class Promotion implements IPromotion {

                    /**
                     * Constructs a new Promotion.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IPromotion);

                    /** Promotion promotionId. */
                    public promotionId: string;

                    /**
                     * Creates a new Promotion instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Promotion instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IPromotion): google.cloud.retail.v2alpha.Promotion;

                    /**
                     * Encodes the specified Promotion message. Does not implicitly {@link google.cloud.retail.v2alpha.Promotion.verify|verify} messages.
                     * @param message Promotion message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IPromotion, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Promotion message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.Promotion.verify|verify} messages.
                     * @param message Promotion message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IPromotion, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Promotion message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Promotion
                     * @throws {Error} If the payload is not 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.retail.v2alpha.Promotion;

                    /**
                     * Decodes a Promotion message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Promotion
                     * @throws {Error} If the payload 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.retail.v2alpha.Promotion;

                    /**
                     * Verifies a Promotion message.
                     * @param message Plain 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 Promotion message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Promotion
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.Promotion;

                    /**
                     * Creates a plain object from a Promotion message. Also converts values to other types if specified.
                     * @param message Promotion
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.Promotion, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Promotion to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Promotion
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Represents a BranchService */
                class BranchService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new BranchService 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 BranchService 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): BranchService;

                    /**
                     * Calls ListBranches.
                     * @param request ListBranchesRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListBranchesResponse
                     */
                    public listBranches(request: google.cloud.retail.v2alpha.IListBranchesRequest, callback: google.cloud.retail.v2alpha.BranchService.ListBranchesCallback): void;

                    /**
                     * Calls ListBranches.
                     * @param request ListBranchesRequest message or plain object
                     * @returns Promise
                     */
                    public listBranches(request: google.cloud.retail.v2alpha.IListBranchesRequest): Promise<google.cloud.retail.v2alpha.ListBranchesResponse>;

                    /**
                     * Calls GetBranch.
                     * @param request GetBranchRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Branch
                     */
                    public getBranch(request: google.cloud.retail.v2alpha.IGetBranchRequest, callback: google.cloud.retail.v2alpha.BranchService.GetBranchCallback): void;

                    /**
                     * Calls GetBranch.
                     * @param request GetBranchRequest message or plain object
                     * @returns Promise
                     */
                    public getBranch(request: google.cloud.retail.v2alpha.IGetBranchRequest): Promise<google.cloud.retail.v2alpha.Branch>;
                }

                namespace BranchService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.BranchService|listBranches}.
                     * @param error Error, if any
                     * @param [response] ListBranchesResponse
                     */
                    type ListBranchesCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.ListBranchesResponse) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.BranchService|getBranch}.
                     * @param error Error, if any
                     * @param [response] Branch
                     */
                    type GetBranchCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.Branch) => void;
                }

                /** Properties of a ListBranchesRequest. */
                interface IListBranchesRequest {

                    /** ListBranchesRequest parent */
                    parent?: (string|null);

                    /** ListBranchesRequest view */
                    view?: (google.cloud.retail.v2alpha.BranchView|keyof typeof google.cloud.retail.v2alpha.BranchView|null);
                }

                /** Represents a ListBranchesRequest. */
                class ListBranchesRequest implements IListBranchesRequest {

                    /**
                     * Constructs a new ListBranchesRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IListBranchesRequest);

                    /** ListBranchesRequest parent. */
                    public parent: string;

                    /** ListBranchesRequest view. */
                    public view: (google.cloud.retail.v2alpha.BranchView|keyof typeof google.cloud.retail.v2alpha.BranchView);

                    /**
                     * Creates a new ListBranchesRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListBranchesRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IListBranchesRequest): google.cloud.retail.v2alpha.ListBranchesRequest;

                    /**
                     * Encodes the specified ListBranchesRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.ListBranchesRequest.verify|verify} messages.
                     * @param message ListBranchesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IListBranchesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListBranchesRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ListBranchesRequest.verify|verify} messages.
                     * @param message ListBranchesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IListBranchesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListBranchesRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListBranchesRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ListBranchesRequest;

                    /**
                     * Decodes a ListBranchesRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListBranchesRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.ListBranchesRequest;

                    /**
                     * Verifies a ListBranchesRequest message.
                     * @param message Plain 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 ListBranchesRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListBranchesRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ListBranchesRequest;

                    /**
                     * Creates a plain object from a ListBranchesRequest message. Also converts values to other types if specified.
                     * @param message ListBranchesRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ListBranchesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListBranchesRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListBranchesRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListBranchesResponse. */
                interface IListBranchesResponse {

                    /** ListBranchesResponse branches */
                    branches?: (google.cloud.retail.v2alpha.IBranch[]|null);
                }

                /** Represents a ListBranchesResponse. */
                class ListBranchesResponse implements IListBranchesResponse {

                    /**
                     * Constructs a new ListBranchesResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IListBranchesResponse);

                    /** ListBranchesResponse branches. */
                    public branches: google.cloud.retail.v2alpha.IBranch[];

                    /**
                     * Creates a new ListBranchesResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListBranchesResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IListBranchesResponse): google.cloud.retail.v2alpha.ListBranchesResponse;

                    /**
                     * Encodes the specified ListBranchesResponse message. Does not implicitly {@link google.cloud.retail.v2alpha.ListBranchesResponse.verify|verify} messages.
                     * @param message ListBranchesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IListBranchesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListBranchesResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ListBranchesResponse.verify|verify} messages.
                     * @param message ListBranchesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IListBranchesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListBranchesResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListBranchesResponse
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ListBranchesResponse;

                    /**
                     * Decodes a ListBranchesResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListBranchesResponse
                     * @throws {Error} If the payload 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.retail.v2alpha.ListBranchesResponse;

                    /**
                     * Verifies a ListBranchesResponse message.
                     * @param message Plain 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 ListBranchesResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListBranchesResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ListBranchesResponse;

                    /**
                     * Creates a plain object from a ListBranchesResponse message. Also converts values to other types if specified.
                     * @param message ListBranchesResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ListBranchesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListBranchesResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListBranchesResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetBranchRequest. */
                interface IGetBranchRequest {

                    /** GetBranchRequest name */
                    name?: (string|null);

                    /** GetBranchRequest view */
                    view?: (google.cloud.retail.v2alpha.BranchView|keyof typeof google.cloud.retail.v2alpha.BranchView|null);
                }

                /** Represents a GetBranchRequest. */
                class GetBranchRequest implements IGetBranchRequest {

                    /**
                     * Constructs a new GetBranchRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IGetBranchRequest);

                    /** GetBranchRequest name. */
                    public name: string;

                    /** GetBranchRequest view. */
                    public view: (google.cloud.retail.v2alpha.BranchView|keyof typeof google.cloud.retail.v2alpha.BranchView);

                    /**
                     * Creates a new GetBranchRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetBranchRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IGetBranchRequest): google.cloud.retail.v2alpha.GetBranchRequest;

                    /**
                     * Encodes the specified GetBranchRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.GetBranchRequest.verify|verify} messages.
                     * @param message GetBranchRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IGetBranchRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetBranchRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.GetBranchRequest.verify|verify} messages.
                     * @param message GetBranchRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IGetBranchRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetBranchRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetBranchRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.GetBranchRequest;

                    /**
                     * Decodes a GetBranchRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetBranchRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.GetBranchRequest;

                    /**
                     * Verifies a GetBranchRequest message.
                     * @param message Plain 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 GetBranchRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetBranchRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.GetBranchRequest;

                    /**
                     * Creates a plain object from a GetBranchRequest message. Also converts values to other types if specified.
                     * @param message GetBranchRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.GetBranchRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetBranchRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetBranchRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ProductLevelConfig. */
                interface IProductLevelConfig {

                    /** ProductLevelConfig ingestionProductType */
                    ingestionProductType?: (string|null);

                    /** ProductLevelConfig merchantCenterProductIdField */
                    merchantCenterProductIdField?: (string|null);
                }

                /** Represents a ProductLevelConfig. */
                class ProductLevelConfig implements IProductLevelConfig {

                    /**
                     * Constructs a new ProductLevelConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IProductLevelConfig);

                    /** ProductLevelConfig ingestionProductType. */
                    public ingestionProductType: string;

                    /** ProductLevelConfig merchantCenterProductIdField. */
                    public merchantCenterProductIdField: string;

                    /**
                     * Creates a new ProductLevelConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ProductLevelConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IProductLevelConfig): google.cloud.retail.v2alpha.ProductLevelConfig;

                    /**
                     * Encodes the specified ProductLevelConfig message. Does not implicitly {@link google.cloud.retail.v2alpha.ProductLevelConfig.verify|verify} messages.
                     * @param message ProductLevelConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IProductLevelConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ProductLevelConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ProductLevelConfig.verify|verify} messages.
                     * @param message ProductLevelConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IProductLevelConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ProductLevelConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ProductLevelConfig
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ProductLevelConfig;

                    /**
                     * Decodes a ProductLevelConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ProductLevelConfig
                     * @throws {Error} If the payload 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.retail.v2alpha.ProductLevelConfig;

                    /**
                     * Verifies a ProductLevelConfig message.
                     * @param message Plain 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 ProductLevelConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ProductLevelConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ProductLevelConfig;

                    /**
                     * Creates a plain object from a ProductLevelConfig message. Also converts values to other types if specified.
                     * @param message ProductLevelConfig
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ProductLevelConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ProductLevelConfig to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ProductLevelConfig
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CatalogAttribute. */
                interface ICatalogAttribute {

                    /** CatalogAttribute key */
                    key?: (string|null);

                    /** CatalogAttribute inUse */
                    inUse?: (boolean|null);

                    /** CatalogAttribute type */
                    type?: (google.cloud.retail.v2alpha.CatalogAttribute.AttributeType|keyof typeof google.cloud.retail.v2alpha.CatalogAttribute.AttributeType|null);

                    /** CatalogAttribute indexableOption */
                    indexableOption?: (google.cloud.retail.v2alpha.CatalogAttribute.IndexableOption|keyof typeof google.cloud.retail.v2alpha.CatalogAttribute.IndexableOption|null);

                    /** CatalogAttribute dynamicFacetableOption */
                    dynamicFacetableOption?: (google.cloud.retail.v2alpha.CatalogAttribute.DynamicFacetableOption|keyof typeof google.cloud.retail.v2alpha.CatalogAttribute.DynamicFacetableOption|null);

                    /** CatalogAttribute searchableOption */
                    searchableOption?: (google.cloud.retail.v2alpha.CatalogAttribute.SearchableOption|keyof typeof google.cloud.retail.v2alpha.CatalogAttribute.SearchableOption|null);

                    /** CatalogAttribute recommendationsFilteringOption */
                    recommendationsFilteringOption?: (google.cloud.retail.v2alpha.RecommendationsFilteringOption|keyof typeof google.cloud.retail.v2alpha.RecommendationsFilteringOption|null);

                    /** CatalogAttribute exactSearchableOption */
                    exactSearchableOption?: (google.cloud.retail.v2alpha.CatalogAttribute.ExactSearchableOption|keyof typeof google.cloud.retail.v2alpha.CatalogAttribute.ExactSearchableOption|null);

                    /** CatalogAttribute retrievableOption */
                    retrievableOption?: (google.cloud.retail.v2alpha.CatalogAttribute.RetrievableOption|keyof typeof google.cloud.retail.v2alpha.CatalogAttribute.RetrievableOption|null);

                    /** CatalogAttribute facetConfig */
                    facetConfig?: (google.cloud.retail.v2alpha.CatalogAttribute.IFacetConfig|null);
                }

                /** Represents a CatalogAttribute. */
                class CatalogAttribute implements ICatalogAttribute {

                    /**
                     * Constructs a new CatalogAttribute.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.ICatalogAttribute);

                    /** CatalogAttribute key. */
                    public key: string;

                    /** CatalogAttribute inUse. */
                    public inUse: boolean;

                    /** CatalogAttribute type. */
                    public type: (google.cloud.retail.v2alpha.CatalogAttribute.AttributeType|keyof typeof google.cloud.retail.v2alpha.CatalogAttribute.AttributeType);

                    /** CatalogAttribute indexableOption. */
                    public indexableOption: (google.cloud.retail.v2alpha.CatalogAttribute.IndexableOption|keyof typeof google.cloud.retail.v2alpha.CatalogAttribute.IndexableOption);

                    /** CatalogAttribute dynamicFacetableOption. */
                    public dynamicFacetableOption: (google.cloud.retail.v2alpha.CatalogAttribute.DynamicFacetableOption|keyof typeof google.cloud.retail.v2alpha.CatalogAttribute.DynamicFacetableOption);

                    /** CatalogAttribute searchableOption. */
                    public searchableOption: (google.cloud.retail.v2alpha.CatalogAttribute.SearchableOption|keyof typeof google.cloud.retail.v2alpha.CatalogAttribute.SearchableOption);

                    /** CatalogAttribute recommendationsFilteringOption. */
                    public recommendationsFilteringOption: (google.cloud.retail.v2alpha.RecommendationsFilteringOption|keyof typeof google.cloud.retail.v2alpha.RecommendationsFilteringOption);

                    /** CatalogAttribute exactSearchableOption. */
                    public exactSearchableOption: (google.cloud.retail.v2alpha.CatalogAttribute.ExactSearchableOption|keyof typeof google.cloud.retail.v2alpha.CatalogAttribute.ExactSearchableOption);

                    /** CatalogAttribute retrievableOption. */
                    public retrievableOption: (google.cloud.retail.v2alpha.CatalogAttribute.RetrievableOption|keyof typeof google.cloud.retail.v2alpha.CatalogAttribute.RetrievableOption);

                    /** CatalogAttribute facetConfig. */
                    public facetConfig?: (google.cloud.retail.v2alpha.CatalogAttribute.IFacetConfig|null);

                    /**
                     * Creates a new CatalogAttribute instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CatalogAttribute instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.ICatalogAttribute): google.cloud.retail.v2alpha.CatalogAttribute;

                    /**
                     * Encodes the specified CatalogAttribute message. Does not implicitly {@link google.cloud.retail.v2alpha.CatalogAttribute.verify|verify} messages.
                     * @param message CatalogAttribute message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.ICatalogAttribute, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CatalogAttribute message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.CatalogAttribute.verify|verify} messages.
                     * @param message CatalogAttribute message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.ICatalogAttribute, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CatalogAttribute message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CatalogAttribute
                     * @throws {Error} If the payload is not 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.retail.v2alpha.CatalogAttribute;

                    /**
                     * Decodes a CatalogAttribute message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CatalogAttribute
                     * @throws {Error} If the payload 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.retail.v2alpha.CatalogAttribute;

                    /**
                     * Verifies a CatalogAttribute message.
                     * @param message Plain 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 CatalogAttribute message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CatalogAttribute
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.CatalogAttribute;

                    /**
                     * Creates a plain object from a CatalogAttribute message. Also converts values to other types if specified.
                     * @param message CatalogAttribute
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.CatalogAttribute, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CatalogAttribute to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CatalogAttribute
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace CatalogAttribute {

                    /** Properties of a FacetConfig. */
                    interface IFacetConfig {

                        /** FacetConfig facetIntervals */
                        facetIntervals?: (google.cloud.retail.v2alpha.IInterval[]|null);

                        /** FacetConfig ignoredFacetValues */
                        ignoredFacetValues?: (google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.IIgnoredFacetValues[]|null);

                        /** FacetConfig mergedFacetValues */
                        mergedFacetValues?: (google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.IMergedFacetValue[]|null);

                        /** FacetConfig mergedFacet */
                        mergedFacet?: (google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.IMergedFacet|null);

                        /** FacetConfig rerankConfig */
                        rerankConfig?: (google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.IRerankConfig|null);
                    }

                    /** Represents a FacetConfig. */
                    class FacetConfig implements IFacetConfig {

                        /**
                         * Constructs a new FacetConfig.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.CatalogAttribute.IFacetConfig);

                        /** FacetConfig facetIntervals. */
                        public facetIntervals: google.cloud.retail.v2alpha.IInterval[];

                        /** FacetConfig ignoredFacetValues. */
                        public ignoredFacetValues: google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.IIgnoredFacetValues[];

                        /** FacetConfig mergedFacetValues. */
                        public mergedFacetValues: google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.IMergedFacetValue[];

                        /** FacetConfig mergedFacet. */
                        public mergedFacet?: (google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.IMergedFacet|null);

                        /** FacetConfig rerankConfig. */
                        public rerankConfig?: (google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.IRerankConfig|null);

                        /**
                         * Creates a new FacetConfig instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FacetConfig instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.CatalogAttribute.IFacetConfig): google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig;

                        /**
                         * Encodes the specified FacetConfig message. Does not implicitly {@link google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.verify|verify} messages.
                         * @param message FacetConfig message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.CatalogAttribute.IFacetConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FacetConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.verify|verify} messages.
                         * @param message FacetConfig message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.CatalogAttribute.IFacetConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FacetConfig message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FacetConfig
                         * @throws {Error} If the payload is not 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.retail.v2alpha.CatalogAttribute.FacetConfig;

                        /**
                         * Decodes a FacetConfig message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FacetConfig
                         * @throws {Error} If the payload 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.retail.v2alpha.CatalogAttribute.FacetConfig;

                        /**
                         * Verifies a FacetConfig message.
                         * @param message Plain 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 FacetConfig message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FacetConfig
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig;

                        /**
                         * Creates a plain object from a FacetConfig message. Also converts values to other types if specified.
                         * @param message FacetConfig
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FacetConfig to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FacetConfig
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace FacetConfig {

                        /** Properties of an IgnoredFacetValues. */
                        interface IIgnoredFacetValues {

                            /** IgnoredFacetValues values */
                            values?: (string[]|null);

                            /** IgnoredFacetValues startTime */
                            startTime?: (google.protobuf.ITimestamp|null);

                            /** IgnoredFacetValues endTime */
                            endTime?: (google.protobuf.ITimestamp|null);
                        }

                        /** Represents an IgnoredFacetValues. */
                        class IgnoredFacetValues implements IIgnoredFacetValues {

                            /**
                             * Constructs a new IgnoredFacetValues.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.IIgnoredFacetValues);

                            /** IgnoredFacetValues values. */
                            public values: string[];

                            /** IgnoredFacetValues startTime. */
                            public startTime?: (google.protobuf.ITimestamp|null);

                            /** IgnoredFacetValues endTime. */
                            public endTime?: (google.protobuf.ITimestamp|null);

                            /**
                             * Creates a new IgnoredFacetValues instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns IgnoredFacetValues instance
                             */
                            public static create(properties?: google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.IIgnoredFacetValues): google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.IgnoredFacetValues;

                            /**
                             * Encodes the specified IgnoredFacetValues message. Does not implicitly {@link google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.IgnoredFacetValues.verify|verify} messages.
                             * @param message IgnoredFacetValues message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.IIgnoredFacetValues, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified IgnoredFacetValues message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.IgnoredFacetValues.verify|verify} messages.
                             * @param message IgnoredFacetValues message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.IIgnoredFacetValues, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an IgnoredFacetValues message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns IgnoredFacetValues
                             * @throws {Error} If the payload is not 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.retail.v2alpha.CatalogAttribute.FacetConfig.IgnoredFacetValues;

                            /**
                             * Decodes an IgnoredFacetValues message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns IgnoredFacetValues
                             * @throws {Error} If the payload 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.retail.v2alpha.CatalogAttribute.FacetConfig.IgnoredFacetValues;

                            /**
                             * Verifies an IgnoredFacetValues message.
                             * @param message Plain 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 IgnoredFacetValues message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns IgnoredFacetValues
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.IgnoredFacetValues;

                            /**
                             * Creates a plain object from an IgnoredFacetValues message. Also converts values to other types if specified.
                             * @param message IgnoredFacetValues
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.IgnoredFacetValues, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this IgnoredFacetValues to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for IgnoredFacetValues
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a MergedFacetValue. */
                        interface IMergedFacetValue {

                            /** MergedFacetValue values */
                            values?: (string[]|null);

                            /** MergedFacetValue mergedValue */
                            mergedValue?: (string|null);
                        }

                        /** Represents a MergedFacetValue. */
                        class MergedFacetValue implements IMergedFacetValue {

                            /**
                             * Constructs a new MergedFacetValue.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.IMergedFacetValue);

                            /** MergedFacetValue values. */
                            public values: string[];

                            /** MergedFacetValue mergedValue. */
                            public mergedValue: string;

                            /**
                             * Creates a new MergedFacetValue instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns MergedFacetValue instance
                             */
                            public static create(properties?: google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.IMergedFacetValue): google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.MergedFacetValue;

                            /**
                             * Encodes the specified MergedFacetValue message. Does not implicitly {@link google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.MergedFacetValue.verify|verify} messages.
                             * @param message MergedFacetValue message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.IMergedFacetValue, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified MergedFacetValue message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.MergedFacetValue.verify|verify} messages.
                             * @param message MergedFacetValue message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.IMergedFacetValue, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a MergedFacetValue message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns MergedFacetValue
                             * @throws {Error} If the payload is not 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.retail.v2alpha.CatalogAttribute.FacetConfig.MergedFacetValue;

                            /**
                             * Decodes a MergedFacetValue message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns MergedFacetValue
                             * @throws {Error} If the payload 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.retail.v2alpha.CatalogAttribute.FacetConfig.MergedFacetValue;

                            /**
                             * Verifies a MergedFacetValue message.
                             * @param message Plain 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 MergedFacetValue message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns MergedFacetValue
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.MergedFacetValue;

                            /**
                             * Creates a plain object from a MergedFacetValue message. Also converts values to other types if specified.
                             * @param message MergedFacetValue
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.MergedFacetValue, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this MergedFacetValue to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for MergedFacetValue
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a MergedFacet. */
                        interface IMergedFacet {

                            /** MergedFacet mergedFacetKey */
                            mergedFacetKey?: (string|null);
                        }

                        /** Represents a MergedFacet. */
                        class MergedFacet implements IMergedFacet {

                            /**
                             * Constructs a new MergedFacet.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.IMergedFacet);

                            /** MergedFacet mergedFacetKey. */
                            public mergedFacetKey: string;

                            /**
                             * Creates a new MergedFacet instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns MergedFacet instance
                             */
                            public static create(properties?: google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.IMergedFacet): google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.MergedFacet;

                            /**
                             * Encodes the specified MergedFacet message. Does not implicitly {@link google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.MergedFacet.verify|verify} messages.
                             * @param message MergedFacet message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.IMergedFacet, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified MergedFacet message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.MergedFacet.verify|verify} messages.
                             * @param message MergedFacet message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.IMergedFacet, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a MergedFacet message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns MergedFacet
                             * @throws {Error} If the payload is not 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.retail.v2alpha.CatalogAttribute.FacetConfig.MergedFacet;

                            /**
                             * Decodes a MergedFacet message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns MergedFacet
                             * @throws {Error} If the payload 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.retail.v2alpha.CatalogAttribute.FacetConfig.MergedFacet;

                            /**
                             * Verifies a MergedFacet message.
                             * @param message Plain 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 MergedFacet message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns MergedFacet
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.MergedFacet;

                            /**
                             * Creates a plain object from a MergedFacet message. Also converts values to other types if specified.
                             * @param message MergedFacet
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.MergedFacet, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this MergedFacet to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for MergedFacet
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a RerankConfig. */
                        interface IRerankConfig {

                            /** RerankConfig rerankFacet */
                            rerankFacet?: (boolean|null);

                            /** RerankConfig facetValues */
                            facetValues?: (string[]|null);
                        }

                        /** Represents a RerankConfig. */
                        class RerankConfig implements IRerankConfig {

                            /**
                             * Constructs a new RerankConfig.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.IRerankConfig);

                            /** RerankConfig rerankFacet. */
                            public rerankFacet: boolean;

                            /** RerankConfig facetValues. */
                            public facetValues: string[];

                            /**
                             * Creates a new RerankConfig instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns RerankConfig instance
                             */
                            public static create(properties?: google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.IRerankConfig): google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.RerankConfig;

                            /**
                             * Encodes the specified RerankConfig message. Does not implicitly {@link google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.RerankConfig.verify|verify} messages.
                             * @param message RerankConfig message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.IRerankConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified RerankConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.RerankConfig.verify|verify} messages.
                             * @param message RerankConfig message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.IRerankConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a RerankConfig message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns RerankConfig
                             * @throws {Error} If the payload is not 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.retail.v2alpha.CatalogAttribute.FacetConfig.RerankConfig;

                            /**
                             * Decodes a RerankConfig message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns RerankConfig
                             * @throws {Error} If the payload 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.retail.v2alpha.CatalogAttribute.FacetConfig.RerankConfig;

                            /**
                             * Verifies a RerankConfig message.
                             * @param message Plain 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 RerankConfig message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns RerankConfig
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.RerankConfig;

                            /**
                             * Creates a plain object from a RerankConfig message. Also converts values to other types if specified.
                             * @param message RerankConfig
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.retail.v2alpha.CatalogAttribute.FacetConfig.RerankConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this RerankConfig to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for RerankConfig
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** AttributeType enum. */
                    enum AttributeType {
                        UNKNOWN = 0,
                        TEXTUAL = 1,
                        NUMERICAL = 2
                    }

                    /** IndexableOption enum. */
                    enum IndexableOption {
                        INDEXABLE_OPTION_UNSPECIFIED = 0,
                        INDEXABLE_ENABLED = 1,
                        INDEXABLE_DISABLED = 2
                    }

                    /** DynamicFacetableOption enum. */
                    enum DynamicFacetableOption {
                        DYNAMIC_FACETABLE_OPTION_UNSPECIFIED = 0,
                        DYNAMIC_FACETABLE_ENABLED = 1,
                        DYNAMIC_FACETABLE_DISABLED = 2
                    }

                    /** SearchableOption enum. */
                    enum SearchableOption {
                        SEARCHABLE_OPTION_UNSPECIFIED = 0,
                        SEARCHABLE_ENABLED = 1,
                        SEARCHABLE_DISABLED = 2
                    }

                    /** ExactSearchableOption enum. */
                    enum ExactSearchableOption {
                        EXACT_SEARCHABLE_OPTION_UNSPECIFIED = 0,
                        EXACT_SEARCHABLE_ENABLED = 1,
                        EXACT_SEARCHABLE_DISABLED = 2
                    }

                    /** RetrievableOption enum. */
                    enum RetrievableOption {
                        RETRIEVABLE_OPTION_UNSPECIFIED = 0,
                        RETRIEVABLE_ENABLED = 1,
                        RETRIEVABLE_DISABLED = 2
                    }
                }

                /** Properties of an AttributesConfig. */
                interface IAttributesConfig {

                    /** AttributesConfig name */
                    name?: (string|null);

                    /** AttributesConfig catalogAttributes */
                    catalogAttributes?: ({ [k: string]: google.cloud.retail.v2alpha.ICatalogAttribute }|null);

                    /** AttributesConfig attributeConfigLevel */
                    attributeConfigLevel?: (google.cloud.retail.v2alpha.AttributeConfigLevel|keyof typeof google.cloud.retail.v2alpha.AttributeConfigLevel|null);
                }

                /** Represents an AttributesConfig. */
                class AttributesConfig implements IAttributesConfig {

                    /**
                     * Constructs a new AttributesConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IAttributesConfig);

                    /** AttributesConfig name. */
                    public name: string;

                    /** AttributesConfig catalogAttributes. */
                    public catalogAttributes: { [k: string]: google.cloud.retail.v2alpha.ICatalogAttribute };

                    /** AttributesConfig attributeConfigLevel. */
                    public attributeConfigLevel: (google.cloud.retail.v2alpha.AttributeConfigLevel|keyof typeof google.cloud.retail.v2alpha.AttributeConfigLevel);

                    /**
                     * Creates a new AttributesConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns AttributesConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IAttributesConfig): google.cloud.retail.v2alpha.AttributesConfig;

                    /**
                     * Encodes the specified AttributesConfig message. Does not implicitly {@link google.cloud.retail.v2alpha.AttributesConfig.verify|verify} messages.
                     * @param message AttributesConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IAttributesConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified AttributesConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.AttributesConfig.verify|verify} messages.
                     * @param message AttributesConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IAttributesConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an AttributesConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns AttributesConfig
                     * @throws {Error} If the payload is not 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.retail.v2alpha.AttributesConfig;

                    /**
                     * Decodes an AttributesConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns AttributesConfig
                     * @throws {Error} If the payload 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.retail.v2alpha.AttributesConfig;

                    /**
                     * Verifies an AttributesConfig message.
                     * @param message Plain 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 AttributesConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns AttributesConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.AttributesConfig;

                    /**
                     * Creates a plain object from an AttributesConfig message. Also converts values to other types if specified.
                     * @param message AttributesConfig
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.AttributesConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this AttributesConfig to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for AttributesConfig
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CompletionConfig. */
                interface ICompletionConfig {

                    /** CompletionConfig name */
                    name?: (string|null);

                    /** CompletionConfig matchingOrder */
                    matchingOrder?: (string|null);

                    /** CompletionConfig maxSuggestions */
                    maxSuggestions?: (number|null);

                    /** CompletionConfig minPrefixLength */
                    minPrefixLength?: (number|null);

                    /** CompletionConfig autoLearning */
                    autoLearning?: (boolean|null);

                    /** CompletionConfig suggestionsInputConfig */
                    suggestionsInputConfig?: (google.cloud.retail.v2alpha.ICompletionDataInputConfig|null);

                    /** CompletionConfig lastSuggestionsImportOperation */
                    lastSuggestionsImportOperation?: (string|null);

                    /** CompletionConfig denylistInputConfig */
                    denylistInputConfig?: (google.cloud.retail.v2alpha.ICompletionDataInputConfig|null);

                    /** CompletionConfig lastDenylistImportOperation */
                    lastDenylistImportOperation?: (string|null);

                    /** CompletionConfig allowlistInputConfig */
                    allowlistInputConfig?: (google.cloud.retail.v2alpha.ICompletionDataInputConfig|null);

                    /** CompletionConfig lastAllowlistImportOperation */
                    lastAllowlistImportOperation?: (string|null);
                }

                /** Represents a CompletionConfig. */
                class CompletionConfig implements ICompletionConfig {

                    /**
                     * Constructs a new CompletionConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.ICompletionConfig);

                    /** CompletionConfig name. */
                    public name: string;

                    /** CompletionConfig matchingOrder. */
                    public matchingOrder: string;

                    /** CompletionConfig maxSuggestions. */
                    public maxSuggestions: number;

                    /** CompletionConfig minPrefixLength. */
                    public minPrefixLength: number;

                    /** CompletionConfig autoLearning. */
                    public autoLearning: boolean;

                    /** CompletionConfig suggestionsInputConfig. */
                    public suggestionsInputConfig?: (google.cloud.retail.v2alpha.ICompletionDataInputConfig|null);

                    /** CompletionConfig lastSuggestionsImportOperation. */
                    public lastSuggestionsImportOperation: string;

                    /** CompletionConfig denylistInputConfig. */
                    public denylistInputConfig?: (google.cloud.retail.v2alpha.ICompletionDataInputConfig|null);

                    /** CompletionConfig lastDenylistImportOperation. */
                    public lastDenylistImportOperation: string;

                    /** CompletionConfig allowlistInputConfig. */
                    public allowlistInputConfig?: (google.cloud.retail.v2alpha.ICompletionDataInputConfig|null);

                    /** CompletionConfig lastAllowlistImportOperation. */
                    public lastAllowlistImportOperation: string;

                    /**
                     * Creates a new CompletionConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CompletionConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.ICompletionConfig): google.cloud.retail.v2alpha.CompletionConfig;

                    /**
                     * Encodes the specified CompletionConfig message. Does not implicitly {@link google.cloud.retail.v2alpha.CompletionConfig.verify|verify} messages.
                     * @param message CompletionConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.ICompletionConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CompletionConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.CompletionConfig.verify|verify} messages.
                     * @param message CompletionConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.ICompletionConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CompletionConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CompletionConfig
                     * @throws {Error} If the payload is not 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.retail.v2alpha.CompletionConfig;

                    /**
                     * Decodes a CompletionConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CompletionConfig
                     * @throws {Error} If the payload 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.retail.v2alpha.CompletionConfig;

                    /**
                     * Verifies a CompletionConfig message.
                     * @param message Plain 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 CompletionConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CompletionConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.CompletionConfig;

                    /**
                     * Creates a plain object from a CompletionConfig message. Also converts values to other types if specified.
                     * @param message CompletionConfig
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.CompletionConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CompletionConfig to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CompletionConfig
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a MerchantCenterLink. */
                interface IMerchantCenterLink {

                    /** MerchantCenterLink merchantCenterAccountId */
                    merchantCenterAccountId?: (number|Long|string|null);

                    /** MerchantCenterLink branchId */
                    branchId?: (string|null);

                    /** MerchantCenterLink destinations */
                    destinations?: (string[]|null);

                    /** MerchantCenterLink regionCode */
                    regionCode?: (string|null);

                    /** MerchantCenterLink languageCode */
                    languageCode?: (string|null);

                    /** MerchantCenterLink feeds */
                    feeds?: (google.cloud.retail.v2alpha.IMerchantCenterFeedFilter[]|null);
                }

                /** Represents a MerchantCenterLink. */
                class MerchantCenterLink implements IMerchantCenterLink {

                    /**
                     * Constructs a new MerchantCenterLink.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IMerchantCenterLink);

                    /** MerchantCenterLink merchantCenterAccountId. */
                    public merchantCenterAccountId: (number|Long|string);

                    /** MerchantCenterLink branchId. */
                    public branchId: string;

                    /** MerchantCenterLink destinations. */
                    public destinations: string[];

                    /** MerchantCenterLink regionCode. */
                    public regionCode: string;

                    /** MerchantCenterLink languageCode. */
                    public languageCode: string;

                    /** MerchantCenterLink feeds. */
                    public feeds: google.cloud.retail.v2alpha.IMerchantCenterFeedFilter[];

                    /**
                     * Creates a new MerchantCenterLink instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns MerchantCenterLink instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IMerchantCenterLink): google.cloud.retail.v2alpha.MerchantCenterLink;

                    /**
                     * Encodes the specified MerchantCenterLink message. Does not implicitly {@link google.cloud.retail.v2alpha.MerchantCenterLink.verify|verify} messages.
                     * @param message MerchantCenterLink message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IMerchantCenterLink, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified MerchantCenterLink message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.MerchantCenterLink.verify|verify} messages.
                     * @param message MerchantCenterLink message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IMerchantCenterLink, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a MerchantCenterLink message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns MerchantCenterLink
                     * @throws {Error} If the payload is not 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.retail.v2alpha.MerchantCenterLink;

                    /**
                     * Decodes a MerchantCenterLink message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns MerchantCenterLink
                     * @throws {Error} If the payload 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.retail.v2alpha.MerchantCenterLink;

                    /**
                     * Verifies a MerchantCenterLink message.
                     * @param message Plain 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 MerchantCenterLink message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns MerchantCenterLink
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.MerchantCenterLink;

                    /**
                     * Creates a plain object from a MerchantCenterLink message. Also converts values to other types if specified.
                     * @param message MerchantCenterLink
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.MerchantCenterLink, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this MerchantCenterLink to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for MerchantCenterLink
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a MerchantCenterFeedFilter. */
                interface IMerchantCenterFeedFilter {

                    /** MerchantCenterFeedFilter primaryFeedId */
                    primaryFeedId?: (number|Long|string|null);

                    /** MerchantCenterFeedFilter dataSourceId */
                    dataSourceId?: (number|Long|string|null);

                    /** MerchantCenterFeedFilter primaryFeedName */
                    primaryFeedName?: (string|null);
                }

                /** Represents a MerchantCenterFeedFilter. */
                class MerchantCenterFeedFilter implements IMerchantCenterFeedFilter {

                    /**
                     * Constructs a new MerchantCenterFeedFilter.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IMerchantCenterFeedFilter);

                    /** MerchantCenterFeedFilter primaryFeedId. */
                    public primaryFeedId: (number|Long|string);

                    /** MerchantCenterFeedFilter dataSourceId. */
                    public dataSourceId: (number|Long|string);

                    /** MerchantCenterFeedFilter primaryFeedName. */
                    public primaryFeedName: string;

                    /**
                     * Creates a new MerchantCenterFeedFilter instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns MerchantCenterFeedFilter instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IMerchantCenterFeedFilter): google.cloud.retail.v2alpha.MerchantCenterFeedFilter;

                    /**
                     * Encodes the specified MerchantCenterFeedFilter message. Does not implicitly {@link google.cloud.retail.v2alpha.MerchantCenterFeedFilter.verify|verify} messages.
                     * @param message MerchantCenterFeedFilter message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IMerchantCenterFeedFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified MerchantCenterFeedFilter message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.MerchantCenterFeedFilter.verify|verify} messages.
                     * @param message MerchantCenterFeedFilter message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IMerchantCenterFeedFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a MerchantCenterFeedFilter message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns MerchantCenterFeedFilter
                     * @throws {Error} If the payload is not 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.retail.v2alpha.MerchantCenterFeedFilter;

                    /**
                     * Decodes a MerchantCenterFeedFilter message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns MerchantCenterFeedFilter
                     * @throws {Error} If the payload 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.retail.v2alpha.MerchantCenterFeedFilter;

                    /**
                     * Verifies a MerchantCenterFeedFilter message.
                     * @param message Plain 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 MerchantCenterFeedFilter message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns MerchantCenterFeedFilter
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.MerchantCenterFeedFilter;

                    /**
                     * Creates a plain object from a MerchantCenterFeedFilter message. Also converts values to other types if specified.
                     * @param message MerchantCenterFeedFilter
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.MerchantCenterFeedFilter, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this MerchantCenterFeedFilter to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for MerchantCenterFeedFilter
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a MerchantCenterLinkingConfig. */
                interface IMerchantCenterLinkingConfig {

                    /** MerchantCenterLinkingConfig links */
                    links?: (google.cloud.retail.v2alpha.IMerchantCenterLink[]|null);
                }

                /** Represents a MerchantCenterLinkingConfig. */
                class MerchantCenterLinkingConfig implements IMerchantCenterLinkingConfig {

                    /**
                     * Constructs a new MerchantCenterLinkingConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IMerchantCenterLinkingConfig);

                    /** MerchantCenterLinkingConfig links. */
                    public links: google.cloud.retail.v2alpha.IMerchantCenterLink[];

                    /**
                     * Creates a new MerchantCenterLinkingConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns MerchantCenterLinkingConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IMerchantCenterLinkingConfig): google.cloud.retail.v2alpha.MerchantCenterLinkingConfig;

                    /**
                     * Encodes the specified MerchantCenterLinkingConfig message. Does not implicitly {@link google.cloud.retail.v2alpha.MerchantCenterLinkingConfig.verify|verify} messages.
                     * @param message MerchantCenterLinkingConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IMerchantCenterLinkingConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified MerchantCenterLinkingConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.MerchantCenterLinkingConfig.verify|verify} messages.
                     * @param message MerchantCenterLinkingConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IMerchantCenterLinkingConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a MerchantCenterLinkingConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns MerchantCenterLinkingConfig
                     * @throws {Error} If the payload is not 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.retail.v2alpha.MerchantCenterLinkingConfig;

                    /**
                     * Decodes a MerchantCenterLinkingConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns MerchantCenterLinkingConfig
                     * @throws {Error} If the payload 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.retail.v2alpha.MerchantCenterLinkingConfig;

                    /**
                     * Verifies a MerchantCenterLinkingConfig message.
                     * @param message Plain 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 MerchantCenterLinkingConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns MerchantCenterLinkingConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.MerchantCenterLinkingConfig;

                    /**
                     * Creates a plain object from a MerchantCenterLinkingConfig message. Also converts values to other types if specified.
                     * @param message MerchantCenterLinkingConfig
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.MerchantCenterLinkingConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this MerchantCenterLinkingConfig to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for MerchantCenterLinkingConfig
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a Catalog. */
                interface ICatalog {

                    /** Catalog name */
                    name?: (string|null);

                    /** Catalog displayName */
                    displayName?: (string|null);

                    /** Catalog productLevelConfig */
                    productLevelConfig?: (google.cloud.retail.v2alpha.IProductLevelConfig|null);

                    /** Catalog merchantCenterLinkingConfig */
                    merchantCenterLinkingConfig?: (google.cloud.retail.v2alpha.IMerchantCenterLinkingConfig|null);
                }

                /** Represents a Catalog. */
                class Catalog implements ICatalog {

                    /**
                     * Constructs a new Catalog.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.ICatalog);

                    /** Catalog name. */
                    public name: string;

                    /** Catalog displayName. */
                    public displayName: string;

                    /** Catalog productLevelConfig. */
                    public productLevelConfig?: (google.cloud.retail.v2alpha.IProductLevelConfig|null);

                    /** Catalog merchantCenterLinkingConfig. */
                    public merchantCenterLinkingConfig?: (google.cloud.retail.v2alpha.IMerchantCenterLinkingConfig|null);

                    /**
                     * Creates a new Catalog instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Catalog instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.ICatalog): google.cloud.retail.v2alpha.Catalog;

                    /**
                     * Encodes the specified Catalog message. Does not implicitly {@link google.cloud.retail.v2alpha.Catalog.verify|verify} messages.
                     * @param message Catalog message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.ICatalog, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Catalog message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.Catalog.verify|verify} messages.
                     * @param message Catalog message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.ICatalog, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Catalog message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Catalog
                     * @throws {Error} If the payload is not 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.retail.v2alpha.Catalog;

                    /**
                     * Decodes a Catalog message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Catalog
                     * @throws {Error} If the payload 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.retail.v2alpha.Catalog;

                    /**
                     * Verifies a Catalog message.
                     * @param message Plain 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 Catalog message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Catalog
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.Catalog;

                    /**
                     * Creates a plain object from a Catalog message. Also converts values to other types if specified.
                     * @param message Catalog
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.Catalog, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Catalog to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Catalog
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GcsSource. */
                interface IGcsSource {

                    /** GcsSource inputUris */
                    inputUris?: (string[]|null);

                    /** GcsSource dataSchema */
                    dataSchema?: (string|null);
                }

                /** Represents a GcsSource. */
                class GcsSource implements IGcsSource {

                    /**
                     * Constructs a new GcsSource.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IGcsSource);

                    /** GcsSource inputUris. */
                    public inputUris: string[];

                    /** GcsSource dataSchema. */
                    public dataSchema: string;

                    /**
                     * Creates a new GcsSource instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GcsSource instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IGcsSource): google.cloud.retail.v2alpha.GcsSource;

                    /**
                     * Encodes the specified GcsSource message. Does not implicitly {@link google.cloud.retail.v2alpha.GcsSource.verify|verify} messages.
                     * @param message GcsSource message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IGcsSource, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GcsSource message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.GcsSource.verify|verify} messages.
                     * @param message GcsSource message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IGcsSource, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GcsSource message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GcsSource
                     * @throws {Error} If the payload is not 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.retail.v2alpha.GcsSource;

                    /**
                     * Decodes a GcsSource message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GcsSource
                     * @throws {Error} If the payload 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.retail.v2alpha.GcsSource;

                    /**
                     * Verifies a GcsSource message.
                     * @param message Plain 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 GcsSource message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GcsSource
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.GcsSource;

                    /**
                     * Creates a plain object from a GcsSource message. Also converts values to other types if specified.
                     * @param message GcsSource
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.GcsSource, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GcsSource to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GcsSource
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a BigQuerySource. */
                interface IBigQuerySource {

                    /** BigQuerySource partitionDate */
                    partitionDate?: (google.type.IDate|null);

                    /** BigQuerySource projectId */
                    projectId?: (string|null);

                    /** BigQuerySource datasetId */
                    datasetId?: (string|null);

                    /** BigQuerySource tableId */
                    tableId?: (string|null);

                    /** BigQuerySource gcsStagingDir */
                    gcsStagingDir?: (string|null);

                    /** BigQuerySource dataSchema */
                    dataSchema?: (string|null);
                }

                /** Represents a BigQuerySource. */
                class BigQuerySource implements IBigQuerySource {

                    /**
                     * Constructs a new BigQuerySource.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IBigQuerySource);

                    /** BigQuerySource partitionDate. */
                    public partitionDate?: (google.type.IDate|null);

                    /** BigQuerySource projectId. */
                    public projectId: string;

                    /** BigQuerySource datasetId. */
                    public datasetId: string;

                    /** BigQuerySource tableId. */
                    public tableId: string;

                    /** BigQuerySource gcsStagingDir. */
                    public gcsStagingDir: string;

                    /** BigQuerySource dataSchema. */
                    public dataSchema: string;

                    /** BigQuerySource partition. */
                    public partition?: "partitionDate";

                    /**
                     * Creates a new BigQuerySource instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns BigQuerySource instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IBigQuerySource): google.cloud.retail.v2alpha.BigQuerySource;

                    /**
                     * Encodes the specified BigQuerySource message. Does not implicitly {@link google.cloud.retail.v2alpha.BigQuerySource.verify|verify} messages.
                     * @param message BigQuerySource message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IBigQuerySource, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified BigQuerySource message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.BigQuerySource.verify|verify} messages.
                     * @param message BigQuerySource message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IBigQuerySource, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a BigQuerySource message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns BigQuerySource
                     * @throws {Error} If the payload is not 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.retail.v2alpha.BigQuerySource;

                    /**
                     * Decodes a BigQuerySource message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns BigQuerySource
                     * @throws {Error} If the payload 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.retail.v2alpha.BigQuerySource;

                    /**
                     * Verifies a BigQuerySource message.
                     * @param message Plain 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 BigQuerySource message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns BigQuerySource
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.BigQuerySource;

                    /**
                     * Creates a plain object from a BigQuerySource message. Also converts values to other types if specified.
                     * @param message BigQuerySource
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.BigQuerySource, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this BigQuerySource to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for BigQuerySource
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ProductInlineSource. */
                interface IProductInlineSource {

                    /** ProductInlineSource products */
                    products?: (google.cloud.retail.v2alpha.IProduct[]|null);
                }

                /** Represents a ProductInlineSource. */
                class ProductInlineSource implements IProductInlineSource {

                    /**
                     * Constructs a new ProductInlineSource.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IProductInlineSource);

                    /** ProductInlineSource products. */
                    public products: google.cloud.retail.v2alpha.IProduct[];

                    /**
                     * Creates a new ProductInlineSource instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ProductInlineSource instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IProductInlineSource): google.cloud.retail.v2alpha.ProductInlineSource;

                    /**
                     * Encodes the specified ProductInlineSource message. Does not implicitly {@link google.cloud.retail.v2alpha.ProductInlineSource.verify|verify} messages.
                     * @param message ProductInlineSource message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IProductInlineSource, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ProductInlineSource message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ProductInlineSource.verify|verify} messages.
                     * @param message ProductInlineSource message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IProductInlineSource, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ProductInlineSource message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ProductInlineSource
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ProductInlineSource;

                    /**
                     * Decodes a ProductInlineSource message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ProductInlineSource
                     * @throws {Error} If the payload 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.retail.v2alpha.ProductInlineSource;

                    /**
                     * Verifies a ProductInlineSource message.
                     * @param message Plain 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 ProductInlineSource message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ProductInlineSource
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ProductInlineSource;

                    /**
                     * Creates a plain object from a ProductInlineSource message. Also converts values to other types if specified.
                     * @param message ProductInlineSource
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ProductInlineSource, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ProductInlineSource to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ProductInlineSource
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a UserEventInlineSource. */
                interface IUserEventInlineSource {

                    /** UserEventInlineSource userEvents */
                    userEvents?: (google.cloud.retail.v2alpha.IUserEvent[]|null);
                }

                /** Represents a UserEventInlineSource. */
                class UserEventInlineSource implements IUserEventInlineSource {

                    /**
                     * Constructs a new UserEventInlineSource.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IUserEventInlineSource);

                    /** UserEventInlineSource userEvents. */
                    public userEvents: google.cloud.retail.v2alpha.IUserEvent[];

                    /**
                     * Creates a new UserEventInlineSource instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UserEventInlineSource instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IUserEventInlineSource): google.cloud.retail.v2alpha.UserEventInlineSource;

                    /**
                     * Encodes the specified UserEventInlineSource message. Does not implicitly {@link google.cloud.retail.v2alpha.UserEventInlineSource.verify|verify} messages.
                     * @param message UserEventInlineSource message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IUserEventInlineSource, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UserEventInlineSource message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.UserEventInlineSource.verify|verify} messages.
                     * @param message UserEventInlineSource message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IUserEventInlineSource, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a UserEventInlineSource message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UserEventInlineSource
                     * @throws {Error} If the payload is not 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.retail.v2alpha.UserEventInlineSource;

                    /**
                     * Decodes a UserEventInlineSource message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UserEventInlineSource
                     * @throws {Error} If the payload 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.retail.v2alpha.UserEventInlineSource;

                    /**
                     * Verifies a UserEventInlineSource message.
                     * @param message Plain 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 UserEventInlineSource message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UserEventInlineSource
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.UserEventInlineSource;

                    /**
                     * Creates a plain object from a UserEventInlineSource message. Also converts values to other types if specified.
                     * @param message UserEventInlineSource
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.UserEventInlineSource, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UserEventInlineSource to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UserEventInlineSource
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ImportErrorsConfig. */
                interface IImportErrorsConfig {

                    /** ImportErrorsConfig gcsPrefix */
                    gcsPrefix?: (string|null);
                }

                /** Represents an ImportErrorsConfig. */
                class ImportErrorsConfig implements IImportErrorsConfig {

                    /**
                     * Constructs a new ImportErrorsConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IImportErrorsConfig);

                    /** ImportErrorsConfig gcsPrefix. */
                    public gcsPrefix?: (string|null);

                    /** ImportErrorsConfig destination. */
                    public destination?: "gcsPrefix";

                    /**
                     * Creates a new ImportErrorsConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ImportErrorsConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IImportErrorsConfig): google.cloud.retail.v2alpha.ImportErrorsConfig;

                    /**
                     * Encodes the specified ImportErrorsConfig message. Does not implicitly {@link google.cloud.retail.v2alpha.ImportErrorsConfig.verify|verify} messages.
                     * @param message ImportErrorsConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IImportErrorsConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ImportErrorsConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ImportErrorsConfig.verify|verify} messages.
                     * @param message ImportErrorsConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IImportErrorsConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ImportErrorsConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ImportErrorsConfig
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ImportErrorsConfig;

                    /**
                     * Decodes an ImportErrorsConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ImportErrorsConfig
                     * @throws {Error} If the payload 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.retail.v2alpha.ImportErrorsConfig;

                    /**
                     * Verifies an ImportErrorsConfig message.
                     * @param message Plain 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 ImportErrorsConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ImportErrorsConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ImportErrorsConfig;

                    /**
                     * Creates a plain object from an ImportErrorsConfig message. Also converts values to other types if specified.
                     * @param message ImportErrorsConfig
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ImportErrorsConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ImportErrorsConfig to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ImportErrorsConfig
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ImportProductsRequest. */
                interface IImportProductsRequest {

                    /** ImportProductsRequest parent */
                    parent?: (string|null);

                    /** ImportProductsRequest requestId */
                    requestId?: (string|null);

                    /** ImportProductsRequest inputConfig */
                    inputConfig?: (google.cloud.retail.v2alpha.IProductInputConfig|null);

                    /** ImportProductsRequest errorsConfig */
                    errorsConfig?: (google.cloud.retail.v2alpha.IImportErrorsConfig|null);

                    /** ImportProductsRequest updateMask */
                    updateMask?: (google.protobuf.IFieldMask|null);

                    /** ImportProductsRequest reconciliationMode */
                    reconciliationMode?: (google.cloud.retail.v2alpha.ImportProductsRequest.ReconciliationMode|keyof typeof google.cloud.retail.v2alpha.ImportProductsRequest.ReconciliationMode|null);

                    /** ImportProductsRequest notificationPubsubTopic */
                    notificationPubsubTopic?: (string|null);

                    /** ImportProductsRequest skipDefaultBranchProtection */
                    skipDefaultBranchProtection?: (boolean|null);
                }

                /** Represents an ImportProductsRequest. */
                class ImportProductsRequest implements IImportProductsRequest {

                    /**
                     * Constructs a new ImportProductsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IImportProductsRequest);

                    /** ImportProductsRequest parent. */
                    public parent: string;

                    /** ImportProductsRequest requestId. */
                    public requestId: string;

                    /** ImportProductsRequest inputConfig. */
                    public inputConfig?: (google.cloud.retail.v2alpha.IProductInputConfig|null);

                    /** ImportProductsRequest errorsConfig. */
                    public errorsConfig?: (google.cloud.retail.v2alpha.IImportErrorsConfig|null);

                    /** ImportProductsRequest updateMask. */
                    public updateMask?: (google.protobuf.IFieldMask|null);

                    /** ImportProductsRequest reconciliationMode. */
                    public reconciliationMode: (google.cloud.retail.v2alpha.ImportProductsRequest.ReconciliationMode|keyof typeof google.cloud.retail.v2alpha.ImportProductsRequest.ReconciliationMode);

                    /** ImportProductsRequest notificationPubsubTopic. */
                    public notificationPubsubTopic: string;

                    /** ImportProductsRequest skipDefaultBranchProtection. */
                    public skipDefaultBranchProtection: boolean;

                    /**
                     * Creates a new ImportProductsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ImportProductsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IImportProductsRequest): google.cloud.retail.v2alpha.ImportProductsRequest;

                    /**
                     * Encodes the specified ImportProductsRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.ImportProductsRequest.verify|verify} messages.
                     * @param message ImportProductsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IImportProductsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ImportProductsRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ImportProductsRequest.verify|verify} messages.
                     * @param message ImportProductsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IImportProductsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ImportProductsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ImportProductsRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ImportProductsRequest;

                    /**
                     * Decodes an ImportProductsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ImportProductsRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.ImportProductsRequest;

                    /**
                     * Verifies an ImportProductsRequest message.
                     * @param message Plain 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 ImportProductsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ImportProductsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ImportProductsRequest;

                    /**
                     * Creates a plain object from an ImportProductsRequest message. Also converts values to other types if specified.
                     * @param message ImportProductsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ImportProductsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ImportProductsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ImportProductsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace ImportProductsRequest {

                    /** ReconciliationMode enum. */
                    enum ReconciliationMode {
                        RECONCILIATION_MODE_UNSPECIFIED = 0,
                        INCREMENTAL = 1,
                        FULL = 2
                    }
                }

                /** Properties of an ImportUserEventsRequest. */
                interface IImportUserEventsRequest {

                    /** ImportUserEventsRequest parent */
                    parent?: (string|null);

                    /** ImportUserEventsRequest inputConfig */
                    inputConfig?: (google.cloud.retail.v2alpha.IUserEventInputConfig|null);

                    /** ImportUserEventsRequest errorsConfig */
                    errorsConfig?: (google.cloud.retail.v2alpha.IImportErrorsConfig|null);
                }

                /** Represents an ImportUserEventsRequest. */
                class ImportUserEventsRequest implements IImportUserEventsRequest {

                    /**
                     * Constructs a new ImportUserEventsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IImportUserEventsRequest);

                    /** ImportUserEventsRequest parent. */
                    public parent: string;

                    /** ImportUserEventsRequest inputConfig. */
                    public inputConfig?: (google.cloud.retail.v2alpha.IUserEventInputConfig|null);

                    /** ImportUserEventsRequest errorsConfig. */
                    public errorsConfig?: (google.cloud.retail.v2alpha.IImportErrorsConfig|null);

                    /**
                     * Creates a new ImportUserEventsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ImportUserEventsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IImportUserEventsRequest): google.cloud.retail.v2alpha.ImportUserEventsRequest;

                    /**
                     * Encodes the specified ImportUserEventsRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.ImportUserEventsRequest.verify|verify} messages.
                     * @param message ImportUserEventsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IImportUserEventsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ImportUserEventsRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ImportUserEventsRequest.verify|verify} messages.
                     * @param message ImportUserEventsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IImportUserEventsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ImportUserEventsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ImportUserEventsRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ImportUserEventsRequest;

                    /**
                     * Decodes an ImportUserEventsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ImportUserEventsRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.ImportUserEventsRequest;

                    /**
                     * Verifies an ImportUserEventsRequest message.
                     * @param message Plain 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 ImportUserEventsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ImportUserEventsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ImportUserEventsRequest;

                    /**
                     * Creates a plain object from an ImportUserEventsRequest message. Also converts values to other types if specified.
                     * @param message ImportUserEventsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ImportUserEventsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ImportUserEventsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ImportUserEventsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ImportCompletionDataRequest. */
                interface IImportCompletionDataRequest {

                    /** ImportCompletionDataRequest parent */
                    parent?: (string|null);

                    /** ImportCompletionDataRequest inputConfig */
                    inputConfig?: (google.cloud.retail.v2alpha.ICompletionDataInputConfig|null);

                    /** ImportCompletionDataRequest notificationPubsubTopic */
                    notificationPubsubTopic?: (string|null);
                }

                /** Represents an ImportCompletionDataRequest. */
                class ImportCompletionDataRequest implements IImportCompletionDataRequest {

                    /**
                     * Constructs a new ImportCompletionDataRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IImportCompletionDataRequest);

                    /** ImportCompletionDataRequest parent. */
                    public parent: string;

                    /** ImportCompletionDataRequest inputConfig. */
                    public inputConfig?: (google.cloud.retail.v2alpha.ICompletionDataInputConfig|null);

                    /** ImportCompletionDataRequest notificationPubsubTopic. */
                    public notificationPubsubTopic: string;

                    /**
                     * Creates a new ImportCompletionDataRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ImportCompletionDataRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IImportCompletionDataRequest): google.cloud.retail.v2alpha.ImportCompletionDataRequest;

                    /**
                     * Encodes the specified ImportCompletionDataRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.ImportCompletionDataRequest.verify|verify} messages.
                     * @param message ImportCompletionDataRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IImportCompletionDataRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ImportCompletionDataRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ImportCompletionDataRequest.verify|verify} messages.
                     * @param message ImportCompletionDataRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IImportCompletionDataRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ImportCompletionDataRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ImportCompletionDataRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ImportCompletionDataRequest;

                    /**
                     * Decodes an ImportCompletionDataRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ImportCompletionDataRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.ImportCompletionDataRequest;

                    /**
                     * Verifies an ImportCompletionDataRequest message.
                     * @param message Plain 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 ImportCompletionDataRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ImportCompletionDataRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ImportCompletionDataRequest;

                    /**
                     * Creates a plain object from an ImportCompletionDataRequest message. Also converts values to other types if specified.
                     * @param message ImportCompletionDataRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ImportCompletionDataRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ImportCompletionDataRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ImportCompletionDataRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ProductInputConfig. */
                interface IProductInputConfig {

                    /** ProductInputConfig productInlineSource */
                    productInlineSource?: (google.cloud.retail.v2alpha.IProductInlineSource|null);

                    /** ProductInputConfig gcsSource */
                    gcsSource?: (google.cloud.retail.v2alpha.IGcsSource|null);

                    /** ProductInputConfig bigQuerySource */
                    bigQuerySource?: (google.cloud.retail.v2alpha.IBigQuerySource|null);
                }

                /** Represents a ProductInputConfig. */
                class ProductInputConfig implements IProductInputConfig {

                    /**
                     * Constructs a new ProductInputConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IProductInputConfig);

                    /** ProductInputConfig productInlineSource. */
                    public productInlineSource?: (google.cloud.retail.v2alpha.IProductInlineSource|null);

                    /** ProductInputConfig gcsSource. */
                    public gcsSource?: (google.cloud.retail.v2alpha.IGcsSource|null);

                    /** ProductInputConfig bigQuerySource. */
                    public bigQuerySource?: (google.cloud.retail.v2alpha.IBigQuerySource|null);

                    /** ProductInputConfig source. */
                    public source?: ("productInlineSource"|"gcsSource"|"bigQuerySource");

                    /**
                     * Creates a new ProductInputConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ProductInputConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IProductInputConfig): google.cloud.retail.v2alpha.ProductInputConfig;

                    /**
                     * Encodes the specified ProductInputConfig message. Does not implicitly {@link google.cloud.retail.v2alpha.ProductInputConfig.verify|verify} messages.
                     * @param message ProductInputConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IProductInputConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ProductInputConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ProductInputConfig.verify|verify} messages.
                     * @param message ProductInputConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IProductInputConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ProductInputConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ProductInputConfig
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ProductInputConfig;

                    /**
                     * Decodes a ProductInputConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ProductInputConfig
                     * @throws {Error} If the payload 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.retail.v2alpha.ProductInputConfig;

                    /**
                     * Verifies a ProductInputConfig message.
                     * @param message Plain 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 ProductInputConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ProductInputConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ProductInputConfig;

                    /**
                     * Creates a plain object from a ProductInputConfig message. Also converts values to other types if specified.
                     * @param message ProductInputConfig
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ProductInputConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ProductInputConfig to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ProductInputConfig
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a UserEventInputConfig. */
                interface IUserEventInputConfig {

                    /** UserEventInputConfig userEventInlineSource */
                    userEventInlineSource?: (google.cloud.retail.v2alpha.IUserEventInlineSource|null);

                    /** UserEventInputConfig gcsSource */
                    gcsSource?: (google.cloud.retail.v2alpha.IGcsSource|null);

                    /** UserEventInputConfig bigQuerySource */
                    bigQuerySource?: (google.cloud.retail.v2alpha.IBigQuerySource|null);
                }

                /** Represents a UserEventInputConfig. */
                class UserEventInputConfig implements IUserEventInputConfig {

                    /**
                     * Constructs a new UserEventInputConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IUserEventInputConfig);

                    /** UserEventInputConfig userEventInlineSource. */
                    public userEventInlineSource?: (google.cloud.retail.v2alpha.IUserEventInlineSource|null);

                    /** UserEventInputConfig gcsSource. */
                    public gcsSource?: (google.cloud.retail.v2alpha.IGcsSource|null);

                    /** UserEventInputConfig bigQuerySource. */
                    public bigQuerySource?: (google.cloud.retail.v2alpha.IBigQuerySource|null);

                    /** UserEventInputConfig source. */
                    public source?: ("userEventInlineSource"|"gcsSource"|"bigQuerySource");

                    /**
                     * Creates a new UserEventInputConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UserEventInputConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IUserEventInputConfig): google.cloud.retail.v2alpha.UserEventInputConfig;

                    /**
                     * Encodes the specified UserEventInputConfig message. Does not implicitly {@link google.cloud.retail.v2alpha.UserEventInputConfig.verify|verify} messages.
                     * @param message UserEventInputConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IUserEventInputConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UserEventInputConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.UserEventInputConfig.verify|verify} messages.
                     * @param message UserEventInputConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IUserEventInputConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a UserEventInputConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UserEventInputConfig
                     * @throws {Error} If the payload is not 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.retail.v2alpha.UserEventInputConfig;

                    /**
                     * Decodes a UserEventInputConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UserEventInputConfig
                     * @throws {Error} If the payload 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.retail.v2alpha.UserEventInputConfig;

                    /**
                     * Verifies a UserEventInputConfig message.
                     * @param message Plain 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 UserEventInputConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UserEventInputConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.UserEventInputConfig;

                    /**
                     * Creates a plain object from a UserEventInputConfig message. Also converts values to other types if specified.
                     * @param message UserEventInputConfig
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.UserEventInputConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UserEventInputConfig to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UserEventInputConfig
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CompletionDataInputConfig. */
                interface ICompletionDataInputConfig {

                    /** CompletionDataInputConfig bigQuerySource */
                    bigQuerySource?: (google.cloud.retail.v2alpha.IBigQuerySource|null);
                }

                /** Represents a CompletionDataInputConfig. */
                class CompletionDataInputConfig implements ICompletionDataInputConfig {

                    /**
                     * Constructs a new CompletionDataInputConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.ICompletionDataInputConfig);

                    /** CompletionDataInputConfig bigQuerySource. */
                    public bigQuerySource?: (google.cloud.retail.v2alpha.IBigQuerySource|null);

                    /** CompletionDataInputConfig source. */
                    public source?: "bigQuerySource";

                    /**
                     * Creates a new CompletionDataInputConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CompletionDataInputConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.ICompletionDataInputConfig): google.cloud.retail.v2alpha.CompletionDataInputConfig;

                    /**
                     * Encodes the specified CompletionDataInputConfig message. Does not implicitly {@link google.cloud.retail.v2alpha.CompletionDataInputConfig.verify|verify} messages.
                     * @param message CompletionDataInputConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.ICompletionDataInputConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CompletionDataInputConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.CompletionDataInputConfig.verify|verify} messages.
                     * @param message CompletionDataInputConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.ICompletionDataInputConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CompletionDataInputConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CompletionDataInputConfig
                     * @throws {Error} If the payload is not 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.retail.v2alpha.CompletionDataInputConfig;

                    /**
                     * Decodes a CompletionDataInputConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CompletionDataInputConfig
                     * @throws {Error} If the payload 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.retail.v2alpha.CompletionDataInputConfig;

                    /**
                     * Verifies a CompletionDataInputConfig message.
                     * @param message Plain 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 CompletionDataInputConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CompletionDataInputConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.CompletionDataInputConfig;

                    /**
                     * Creates a plain object from a CompletionDataInputConfig message. Also converts values to other types if specified.
                     * @param message CompletionDataInputConfig
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.CompletionDataInputConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CompletionDataInputConfig to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CompletionDataInputConfig
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ImportMetadata. */
                interface IImportMetadata {

                    /** ImportMetadata createTime */
                    createTime?: (google.protobuf.ITimestamp|null);

                    /** ImportMetadata updateTime */
                    updateTime?: (google.protobuf.ITimestamp|null);

                    /** ImportMetadata successCount */
                    successCount?: (number|Long|string|null);

                    /** ImportMetadata failureCount */
                    failureCount?: (number|Long|string|null);

                    /** ImportMetadata requestId */
                    requestId?: (string|null);

                    /** ImportMetadata notificationPubsubTopic */
                    notificationPubsubTopic?: (string|null);

                    /** ImportMetadata transformedUserEventsMetadata */
                    transformedUserEventsMetadata?: (google.cloud.retail.v2alpha.ITransformedUserEventsMetadata|null);
                }

                /** Represents an ImportMetadata. */
                class ImportMetadata implements IImportMetadata {

                    /**
                     * Constructs a new ImportMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IImportMetadata);

                    /** ImportMetadata createTime. */
                    public createTime?: (google.protobuf.ITimestamp|null);

                    /** ImportMetadata updateTime. */
                    public updateTime?: (google.protobuf.ITimestamp|null);

                    /** ImportMetadata successCount. */
                    public successCount: (number|Long|string);

                    /** ImportMetadata failureCount. */
                    public failureCount: (number|Long|string);

                    /** ImportMetadata requestId. */
                    public requestId: string;

                    /** ImportMetadata notificationPubsubTopic. */
                    public notificationPubsubTopic: string;

                    /** ImportMetadata transformedUserEventsMetadata. */
                    public transformedUserEventsMetadata?: (google.cloud.retail.v2alpha.ITransformedUserEventsMetadata|null);

                    /**
                     * Creates a new ImportMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ImportMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IImportMetadata): google.cloud.retail.v2alpha.ImportMetadata;

                    /**
                     * Encodes the specified ImportMetadata message. Does not implicitly {@link google.cloud.retail.v2alpha.ImportMetadata.verify|verify} messages.
                     * @param message ImportMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IImportMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ImportMetadata message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ImportMetadata.verify|verify} messages.
                     * @param message ImportMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IImportMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ImportMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ImportMetadata
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ImportMetadata;

                    /**
                     * Decodes an ImportMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ImportMetadata
                     * @throws {Error} If the payload 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.retail.v2alpha.ImportMetadata;

                    /**
                     * Verifies an ImportMetadata message.
                     * @param message Plain 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 ImportMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ImportMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ImportMetadata;

                    /**
                     * Creates a plain object from an ImportMetadata message. Also converts values to other types if specified.
                     * @param message ImportMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ImportMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ImportMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ImportMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TransformedUserEventsMetadata. */
                interface ITransformedUserEventsMetadata {

                    /** TransformedUserEventsMetadata sourceEventsCount */
                    sourceEventsCount?: (number|Long|string|null);

                    /** TransformedUserEventsMetadata transformedEventsCount */
                    transformedEventsCount?: (number|Long|string|null);
                }

                /** Represents a TransformedUserEventsMetadata. */
                class TransformedUserEventsMetadata implements ITransformedUserEventsMetadata {

                    /**
                     * Constructs a new TransformedUserEventsMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.ITransformedUserEventsMetadata);

                    /** TransformedUserEventsMetadata sourceEventsCount. */
                    public sourceEventsCount: (number|Long|string);

                    /** TransformedUserEventsMetadata transformedEventsCount. */
                    public transformedEventsCount: (number|Long|string);

                    /**
                     * Creates a new TransformedUserEventsMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TransformedUserEventsMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.ITransformedUserEventsMetadata): google.cloud.retail.v2alpha.TransformedUserEventsMetadata;

                    /**
                     * Encodes the specified TransformedUserEventsMetadata message. Does not implicitly {@link google.cloud.retail.v2alpha.TransformedUserEventsMetadata.verify|verify} messages.
                     * @param message TransformedUserEventsMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.ITransformedUserEventsMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TransformedUserEventsMetadata message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.TransformedUserEventsMetadata.verify|verify} messages.
                     * @param message TransformedUserEventsMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.ITransformedUserEventsMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TransformedUserEventsMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TransformedUserEventsMetadata
                     * @throws {Error} If the payload is not 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.retail.v2alpha.TransformedUserEventsMetadata;

                    /**
                     * Decodes a TransformedUserEventsMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TransformedUserEventsMetadata
                     * @throws {Error} If the payload 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.retail.v2alpha.TransformedUserEventsMetadata;

                    /**
                     * Verifies a TransformedUserEventsMetadata message.
                     * @param message Plain 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 TransformedUserEventsMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TransformedUserEventsMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.TransformedUserEventsMetadata;

                    /**
                     * Creates a plain object from a TransformedUserEventsMetadata message. Also converts values to other types if specified.
                     * @param message TransformedUserEventsMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.TransformedUserEventsMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TransformedUserEventsMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TransformedUserEventsMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ImportProductsResponse. */
                interface IImportProductsResponse {

                    /** ImportProductsResponse errorSamples */
                    errorSamples?: (google.rpc.IStatus[]|null);

                    /** ImportProductsResponse errorsConfig */
                    errorsConfig?: (google.cloud.retail.v2alpha.IImportErrorsConfig|null);
                }

                /** Represents an ImportProductsResponse. */
                class ImportProductsResponse implements IImportProductsResponse {

                    /**
                     * Constructs a new ImportProductsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IImportProductsResponse);

                    /** ImportProductsResponse errorSamples. */
                    public errorSamples: google.rpc.IStatus[];

                    /** ImportProductsResponse errorsConfig. */
                    public errorsConfig?: (google.cloud.retail.v2alpha.IImportErrorsConfig|null);

                    /**
                     * Creates a new ImportProductsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ImportProductsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IImportProductsResponse): google.cloud.retail.v2alpha.ImportProductsResponse;

                    /**
                     * Encodes the specified ImportProductsResponse message. Does not implicitly {@link google.cloud.retail.v2alpha.ImportProductsResponse.verify|verify} messages.
                     * @param message ImportProductsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IImportProductsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ImportProductsResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ImportProductsResponse.verify|verify} messages.
                     * @param message ImportProductsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IImportProductsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ImportProductsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ImportProductsResponse
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ImportProductsResponse;

                    /**
                     * Decodes an ImportProductsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ImportProductsResponse
                     * @throws {Error} If the payload 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.retail.v2alpha.ImportProductsResponse;

                    /**
                     * Verifies an ImportProductsResponse message.
                     * @param message Plain 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 ImportProductsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ImportProductsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ImportProductsResponse;

                    /**
                     * Creates a plain object from an ImportProductsResponse message. Also converts values to other types if specified.
                     * @param message ImportProductsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ImportProductsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ImportProductsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ImportProductsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ImportUserEventsResponse. */
                interface IImportUserEventsResponse {

                    /** ImportUserEventsResponse errorSamples */
                    errorSamples?: (google.rpc.IStatus[]|null);

                    /** ImportUserEventsResponse errorsConfig */
                    errorsConfig?: (google.cloud.retail.v2alpha.IImportErrorsConfig|null);

                    /** ImportUserEventsResponse importSummary */
                    importSummary?: (google.cloud.retail.v2alpha.IUserEventImportSummary|null);
                }

                /** Represents an ImportUserEventsResponse. */
                class ImportUserEventsResponse implements IImportUserEventsResponse {

                    /**
                     * Constructs a new ImportUserEventsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IImportUserEventsResponse);

                    /** ImportUserEventsResponse errorSamples. */
                    public errorSamples: google.rpc.IStatus[];

                    /** ImportUserEventsResponse errorsConfig. */
                    public errorsConfig?: (google.cloud.retail.v2alpha.IImportErrorsConfig|null);

                    /** ImportUserEventsResponse importSummary. */
                    public importSummary?: (google.cloud.retail.v2alpha.IUserEventImportSummary|null);

                    /**
                     * Creates a new ImportUserEventsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ImportUserEventsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IImportUserEventsResponse): google.cloud.retail.v2alpha.ImportUserEventsResponse;

                    /**
                     * Encodes the specified ImportUserEventsResponse message. Does not implicitly {@link google.cloud.retail.v2alpha.ImportUserEventsResponse.verify|verify} messages.
                     * @param message ImportUserEventsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IImportUserEventsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ImportUserEventsResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ImportUserEventsResponse.verify|verify} messages.
                     * @param message ImportUserEventsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IImportUserEventsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ImportUserEventsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ImportUserEventsResponse
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ImportUserEventsResponse;

                    /**
                     * Decodes an ImportUserEventsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ImportUserEventsResponse
                     * @throws {Error} If the payload 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.retail.v2alpha.ImportUserEventsResponse;

                    /**
                     * Verifies an ImportUserEventsResponse message.
                     * @param message Plain 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 ImportUserEventsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ImportUserEventsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ImportUserEventsResponse;

                    /**
                     * Creates a plain object from an ImportUserEventsResponse message. Also converts values to other types if specified.
                     * @param message ImportUserEventsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ImportUserEventsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ImportUserEventsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ImportUserEventsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a UserEventImportSummary. */
                interface IUserEventImportSummary {

                    /** UserEventImportSummary joinedEventsCount */
                    joinedEventsCount?: (number|Long|string|null);

                    /** UserEventImportSummary unjoinedEventsCount */
                    unjoinedEventsCount?: (number|Long|string|null);
                }

                /** Represents a UserEventImportSummary. */
                class UserEventImportSummary implements IUserEventImportSummary {

                    /**
                     * Constructs a new UserEventImportSummary.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IUserEventImportSummary);

                    /** UserEventImportSummary joinedEventsCount. */
                    public joinedEventsCount: (number|Long|string);

                    /** UserEventImportSummary unjoinedEventsCount. */
                    public unjoinedEventsCount: (number|Long|string);

                    /**
                     * Creates a new UserEventImportSummary instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UserEventImportSummary instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IUserEventImportSummary): google.cloud.retail.v2alpha.UserEventImportSummary;

                    /**
                     * Encodes the specified UserEventImportSummary message. Does not implicitly {@link google.cloud.retail.v2alpha.UserEventImportSummary.verify|verify} messages.
                     * @param message UserEventImportSummary message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IUserEventImportSummary, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UserEventImportSummary message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.UserEventImportSummary.verify|verify} messages.
                     * @param message UserEventImportSummary message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IUserEventImportSummary, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a UserEventImportSummary message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UserEventImportSummary
                     * @throws {Error} If the payload is not 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.retail.v2alpha.UserEventImportSummary;

                    /**
                     * Decodes a UserEventImportSummary message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UserEventImportSummary
                     * @throws {Error} If the payload 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.retail.v2alpha.UserEventImportSummary;

                    /**
                     * Verifies a UserEventImportSummary message.
                     * @param message Plain 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 UserEventImportSummary message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UserEventImportSummary
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.UserEventImportSummary;

                    /**
                     * Creates a plain object from a UserEventImportSummary message. Also converts values to other types if specified.
                     * @param message UserEventImportSummary
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.UserEventImportSummary, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UserEventImportSummary to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UserEventImportSummary
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ImportCompletionDataResponse. */
                interface IImportCompletionDataResponse {

                    /** ImportCompletionDataResponse errorSamples */
                    errorSamples?: (google.rpc.IStatus[]|null);
                }

                /** Represents an ImportCompletionDataResponse. */
                class ImportCompletionDataResponse implements IImportCompletionDataResponse {

                    /**
                     * Constructs a new ImportCompletionDataResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IImportCompletionDataResponse);

                    /** ImportCompletionDataResponse errorSamples. */
                    public errorSamples: google.rpc.IStatus[];

                    /**
                     * Creates a new ImportCompletionDataResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ImportCompletionDataResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IImportCompletionDataResponse): google.cloud.retail.v2alpha.ImportCompletionDataResponse;

                    /**
                     * Encodes the specified ImportCompletionDataResponse message. Does not implicitly {@link google.cloud.retail.v2alpha.ImportCompletionDataResponse.verify|verify} messages.
                     * @param message ImportCompletionDataResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IImportCompletionDataResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ImportCompletionDataResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ImportCompletionDataResponse.verify|verify} messages.
                     * @param message ImportCompletionDataResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IImportCompletionDataResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ImportCompletionDataResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ImportCompletionDataResponse
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ImportCompletionDataResponse;

                    /**
                     * Decodes an ImportCompletionDataResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ImportCompletionDataResponse
                     * @throws {Error} If the payload 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.retail.v2alpha.ImportCompletionDataResponse;

                    /**
                     * Verifies an ImportCompletionDataResponse message.
                     * @param message Plain 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 ImportCompletionDataResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ImportCompletionDataResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ImportCompletionDataResponse;

                    /**
                     * Creates a plain object from an ImportCompletionDataResponse message. Also converts values to other types if specified.
                     * @param message ImportCompletionDataResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ImportCompletionDataResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ImportCompletionDataResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ImportCompletionDataResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a UserEvent. */
                interface IUserEvent {

                    /** UserEvent eventType */
                    eventType?: (string|null);

                    /** UserEvent visitorId */
                    visitorId?: (string|null);

                    /** UserEvent sessionId */
                    sessionId?: (string|null);

                    /** UserEvent eventTime */
                    eventTime?: (google.protobuf.ITimestamp|null);

                    /** UserEvent experimentIds */
                    experimentIds?: (string[]|null);

                    /** UserEvent attributionToken */
                    attributionToken?: (string|null);

                    /** UserEvent productDetails */
                    productDetails?: (google.cloud.retail.v2alpha.IProductDetail[]|null);

                    /** UserEvent completionDetail */
                    completionDetail?: (google.cloud.retail.v2alpha.ICompletionDetail|null);

                    /** UserEvent attributes */
                    attributes?: ({ [k: string]: google.cloud.retail.v2alpha.ICustomAttribute }|null);

                    /** UserEvent cartId */
                    cartId?: (string|null);

                    /** UserEvent purchaseTransaction */
                    purchaseTransaction?: (google.cloud.retail.v2alpha.IPurchaseTransaction|null);

                    /** UserEvent searchQuery */
                    searchQuery?: (string|null);

                    /** UserEvent filter */
                    filter?: (string|null);

                    /** UserEvent orderBy */
                    orderBy?: (string|null);

                    /** UserEvent offset */
                    offset?: (number|null);

                    /** UserEvent pageCategories */
                    pageCategories?: (string[]|null);

                    /** UserEvent userInfo */
                    userInfo?: (google.cloud.retail.v2alpha.IUserInfo|null);

                    /** UserEvent uri */
                    uri?: (string|null);

                    /** UserEvent referrerUri */
                    referrerUri?: (string|null);

                    /** UserEvent pageViewId */
                    pageViewId?: (string|null);

                    /** UserEvent entity */
                    entity?: (string|null);
                }

                /** Represents a UserEvent. */
                class UserEvent implements IUserEvent {

                    /**
                     * Constructs a new UserEvent.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IUserEvent);

                    /** UserEvent eventType. */
                    public eventType: string;

                    /** UserEvent visitorId. */
                    public visitorId: string;

                    /** UserEvent sessionId. */
                    public sessionId: string;

                    /** UserEvent eventTime. */
                    public eventTime?: (google.protobuf.ITimestamp|null);

                    /** UserEvent experimentIds. */
                    public experimentIds: string[];

                    /** UserEvent attributionToken. */
                    public attributionToken: string;

                    /** UserEvent productDetails. */
                    public productDetails: google.cloud.retail.v2alpha.IProductDetail[];

                    /** UserEvent completionDetail. */
                    public completionDetail?: (google.cloud.retail.v2alpha.ICompletionDetail|null);

                    /** UserEvent attributes. */
                    public attributes: { [k: string]: google.cloud.retail.v2alpha.ICustomAttribute };

                    /** UserEvent cartId. */
                    public cartId: string;

                    /** UserEvent purchaseTransaction. */
                    public purchaseTransaction?: (google.cloud.retail.v2alpha.IPurchaseTransaction|null);

                    /** UserEvent searchQuery. */
                    public searchQuery: string;

                    /** UserEvent filter. */
                    public filter: string;

                    /** UserEvent orderBy. */
                    public orderBy: string;

                    /** UserEvent offset. */
                    public offset: number;

                    /** UserEvent pageCategories. */
                    public pageCategories: string[];

                    /** UserEvent userInfo. */
                    public userInfo?: (google.cloud.retail.v2alpha.IUserInfo|null);

                    /** UserEvent uri. */
                    public uri: string;

                    /** UserEvent referrerUri. */
                    public referrerUri: string;

                    /** UserEvent pageViewId. */
                    public pageViewId: string;

                    /** UserEvent entity. */
                    public entity: string;

                    /**
                     * Creates a new UserEvent instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UserEvent instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IUserEvent): google.cloud.retail.v2alpha.UserEvent;

                    /**
                     * Encodes the specified UserEvent message. Does not implicitly {@link google.cloud.retail.v2alpha.UserEvent.verify|verify} messages.
                     * @param message UserEvent message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IUserEvent, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UserEvent message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.UserEvent.verify|verify} messages.
                     * @param message UserEvent message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IUserEvent, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a UserEvent message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UserEvent
                     * @throws {Error} If the payload is not 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.retail.v2alpha.UserEvent;

                    /**
                     * Decodes a UserEvent message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UserEvent
                     * @throws {Error} If the payload 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.retail.v2alpha.UserEvent;

                    /**
                     * Verifies a UserEvent message.
                     * @param message Plain 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 UserEvent message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UserEvent
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.UserEvent;

                    /**
                     * Creates a plain object from a UserEvent message. Also converts values to other types if specified.
                     * @param message UserEvent
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.UserEvent, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UserEvent to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UserEvent
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ProductDetail. */
                interface IProductDetail {

                    /** ProductDetail product */
                    product?: (google.cloud.retail.v2alpha.IProduct|null);

                    /** ProductDetail quantity */
                    quantity?: (google.protobuf.IInt32Value|null);
                }

                /** Represents a ProductDetail. */
                class ProductDetail implements IProductDetail {

                    /**
                     * Constructs a new ProductDetail.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IProductDetail);

                    /** ProductDetail product. */
                    public product?: (google.cloud.retail.v2alpha.IProduct|null);

                    /** ProductDetail quantity. */
                    public quantity?: (google.protobuf.IInt32Value|null);

                    /**
                     * Creates a new ProductDetail instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ProductDetail instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IProductDetail): google.cloud.retail.v2alpha.ProductDetail;

                    /**
                     * Encodes the specified ProductDetail message. Does not implicitly {@link google.cloud.retail.v2alpha.ProductDetail.verify|verify} messages.
                     * @param message ProductDetail message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IProductDetail, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ProductDetail message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ProductDetail.verify|verify} messages.
                     * @param message ProductDetail message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IProductDetail, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ProductDetail message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ProductDetail
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ProductDetail;

                    /**
                     * Decodes a ProductDetail message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ProductDetail
                     * @throws {Error} If the payload 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.retail.v2alpha.ProductDetail;

                    /**
                     * Verifies a ProductDetail message.
                     * @param message Plain 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 ProductDetail message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ProductDetail
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ProductDetail;

                    /**
                     * Creates a plain object from a ProductDetail message. Also converts values to other types if specified.
                     * @param message ProductDetail
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ProductDetail, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ProductDetail to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ProductDetail
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CompletionDetail. */
                interface ICompletionDetail {

                    /** CompletionDetail completionAttributionToken */
                    completionAttributionToken?: (string|null);

                    /** CompletionDetail selectedSuggestion */
                    selectedSuggestion?: (string|null);

                    /** CompletionDetail selectedPosition */
                    selectedPosition?: (number|null);
                }

                /** Represents a CompletionDetail. */
                class CompletionDetail implements ICompletionDetail {

                    /**
                     * Constructs a new CompletionDetail.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.ICompletionDetail);

                    /** CompletionDetail completionAttributionToken. */
                    public completionAttributionToken: string;

                    /** CompletionDetail selectedSuggestion. */
                    public selectedSuggestion: string;

                    /** CompletionDetail selectedPosition. */
                    public selectedPosition: number;

                    /**
                     * Creates a new CompletionDetail instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CompletionDetail instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.ICompletionDetail): google.cloud.retail.v2alpha.CompletionDetail;

                    /**
                     * Encodes the specified CompletionDetail message. Does not implicitly {@link google.cloud.retail.v2alpha.CompletionDetail.verify|verify} messages.
                     * @param message CompletionDetail message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.ICompletionDetail, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CompletionDetail message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.CompletionDetail.verify|verify} messages.
                     * @param message CompletionDetail message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.ICompletionDetail, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CompletionDetail message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CompletionDetail
                     * @throws {Error} If the payload is not 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.retail.v2alpha.CompletionDetail;

                    /**
                     * Decodes a CompletionDetail message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CompletionDetail
                     * @throws {Error} If the payload 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.retail.v2alpha.CompletionDetail;

                    /**
                     * Verifies a CompletionDetail message.
                     * @param message Plain 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 CompletionDetail message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CompletionDetail
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.CompletionDetail;

                    /**
                     * Creates a plain object from a CompletionDetail message. Also converts values to other types if specified.
                     * @param message CompletionDetail
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.CompletionDetail, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CompletionDetail to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CompletionDetail
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PurchaseTransaction. */
                interface IPurchaseTransaction {

                    /** PurchaseTransaction id */
                    id?: (string|null);

                    /** PurchaseTransaction revenue */
                    revenue?: (number|null);

                    /** PurchaseTransaction tax */
                    tax?: (number|null);

                    /** PurchaseTransaction cost */
                    cost?: (number|null);

                    /** PurchaseTransaction currencyCode */
                    currencyCode?: (string|null);
                }

                /** Represents a PurchaseTransaction. */
                class PurchaseTransaction implements IPurchaseTransaction {

                    /**
                     * Constructs a new PurchaseTransaction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IPurchaseTransaction);

                    /** PurchaseTransaction id. */
                    public id: string;

                    /** PurchaseTransaction revenue. */
                    public revenue: number;

                    /** PurchaseTransaction tax. */
                    public tax: number;

                    /** PurchaseTransaction cost. */
                    public cost: number;

                    /** PurchaseTransaction currencyCode. */
                    public currencyCode: string;

                    /**
                     * Creates a new PurchaseTransaction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PurchaseTransaction instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IPurchaseTransaction): google.cloud.retail.v2alpha.PurchaseTransaction;

                    /**
                     * Encodes the specified PurchaseTransaction message. Does not implicitly {@link google.cloud.retail.v2alpha.PurchaseTransaction.verify|verify} messages.
                     * @param message PurchaseTransaction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IPurchaseTransaction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PurchaseTransaction message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.PurchaseTransaction.verify|verify} messages.
                     * @param message PurchaseTransaction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IPurchaseTransaction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PurchaseTransaction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PurchaseTransaction
                     * @throws {Error} If the payload is not 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.retail.v2alpha.PurchaseTransaction;

                    /**
                     * Decodes a PurchaseTransaction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PurchaseTransaction
                     * @throws {Error} If the payload 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.retail.v2alpha.PurchaseTransaction;

                    /**
                     * Verifies a PurchaseTransaction message.
                     * @param message Plain 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 PurchaseTransaction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PurchaseTransaction
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.PurchaseTransaction;

                    /**
                     * Creates a plain object from a PurchaseTransaction message. Also converts values to other types if specified.
                     * @param message PurchaseTransaction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.PurchaseTransaction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PurchaseTransaction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PurchaseTransaction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Represents a CatalogService */
                class CatalogService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new CatalogService 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 CatalogService 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): CatalogService;

                    /**
                     * Calls ListCatalogs.
                     * @param request ListCatalogsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListCatalogsResponse
                     */
                    public listCatalogs(request: google.cloud.retail.v2alpha.IListCatalogsRequest, callback: google.cloud.retail.v2alpha.CatalogService.ListCatalogsCallback): void;

                    /**
                     * Calls ListCatalogs.
                     * @param request ListCatalogsRequest message or plain object
                     * @returns Promise
                     */
                    public listCatalogs(request: google.cloud.retail.v2alpha.IListCatalogsRequest): Promise<google.cloud.retail.v2alpha.ListCatalogsResponse>;

                    /**
                     * Calls UpdateCatalog.
                     * @param request UpdateCatalogRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Catalog
                     */
                    public updateCatalog(request: google.cloud.retail.v2alpha.IUpdateCatalogRequest, callback: google.cloud.retail.v2alpha.CatalogService.UpdateCatalogCallback): void;

                    /**
                     * Calls UpdateCatalog.
                     * @param request UpdateCatalogRequest message or plain object
                     * @returns Promise
                     */
                    public updateCatalog(request: google.cloud.retail.v2alpha.IUpdateCatalogRequest): Promise<google.cloud.retail.v2alpha.Catalog>;

                    /**
                     * Calls SetDefaultBranch.
                     * @param request SetDefaultBranchRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Empty
                     */
                    public setDefaultBranch(request: google.cloud.retail.v2alpha.ISetDefaultBranchRequest, callback: google.cloud.retail.v2alpha.CatalogService.SetDefaultBranchCallback): void;

                    /**
                     * Calls SetDefaultBranch.
                     * @param request SetDefaultBranchRequest message or plain object
                     * @returns Promise
                     */
                    public setDefaultBranch(request: google.cloud.retail.v2alpha.ISetDefaultBranchRequest): Promise<google.protobuf.Empty>;

                    /**
                     * Calls GetDefaultBranch.
                     * @param request GetDefaultBranchRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and GetDefaultBranchResponse
                     */
                    public getDefaultBranch(request: google.cloud.retail.v2alpha.IGetDefaultBranchRequest, callback: google.cloud.retail.v2alpha.CatalogService.GetDefaultBranchCallback): void;

                    /**
                     * Calls GetDefaultBranch.
                     * @param request GetDefaultBranchRequest message or plain object
                     * @returns Promise
                     */
                    public getDefaultBranch(request: google.cloud.retail.v2alpha.IGetDefaultBranchRequest): Promise<google.cloud.retail.v2alpha.GetDefaultBranchResponse>;

                    /**
                     * Calls GetCompletionConfig.
                     * @param request GetCompletionConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and CompletionConfig
                     */
                    public getCompletionConfig(request: google.cloud.retail.v2alpha.IGetCompletionConfigRequest, callback: google.cloud.retail.v2alpha.CatalogService.GetCompletionConfigCallback): void;

                    /**
                     * Calls GetCompletionConfig.
                     * @param request GetCompletionConfigRequest message or plain object
                     * @returns Promise
                     */
                    public getCompletionConfig(request: google.cloud.retail.v2alpha.IGetCompletionConfigRequest): Promise<google.cloud.retail.v2alpha.CompletionConfig>;

                    /**
                     * Calls UpdateCompletionConfig.
                     * @param request UpdateCompletionConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and CompletionConfig
                     */
                    public updateCompletionConfig(request: google.cloud.retail.v2alpha.IUpdateCompletionConfigRequest, callback: google.cloud.retail.v2alpha.CatalogService.UpdateCompletionConfigCallback): void;

                    /**
                     * Calls UpdateCompletionConfig.
                     * @param request UpdateCompletionConfigRequest message or plain object
                     * @returns Promise
                     */
                    public updateCompletionConfig(request: google.cloud.retail.v2alpha.IUpdateCompletionConfigRequest): Promise<google.cloud.retail.v2alpha.CompletionConfig>;

                    /**
                     * Calls GetAttributesConfig.
                     * @param request GetAttributesConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and AttributesConfig
                     */
                    public getAttributesConfig(request: google.cloud.retail.v2alpha.IGetAttributesConfigRequest, callback: google.cloud.retail.v2alpha.CatalogService.GetAttributesConfigCallback): void;

                    /**
                     * Calls GetAttributesConfig.
                     * @param request GetAttributesConfigRequest message or plain object
                     * @returns Promise
                     */
                    public getAttributesConfig(request: google.cloud.retail.v2alpha.IGetAttributesConfigRequest): Promise<google.cloud.retail.v2alpha.AttributesConfig>;

                    /**
                     * Calls UpdateAttributesConfig.
                     * @param request UpdateAttributesConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and AttributesConfig
                     */
                    public updateAttributesConfig(request: google.cloud.retail.v2alpha.IUpdateAttributesConfigRequest, callback: google.cloud.retail.v2alpha.CatalogService.UpdateAttributesConfigCallback): void;

                    /**
                     * Calls UpdateAttributesConfig.
                     * @param request UpdateAttributesConfigRequest message or plain object
                     * @returns Promise
                     */
                    public updateAttributesConfig(request: google.cloud.retail.v2alpha.IUpdateAttributesConfigRequest): Promise<google.cloud.retail.v2alpha.AttributesConfig>;

                    /**
                     * Calls AddCatalogAttribute.
                     * @param request AddCatalogAttributeRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and AttributesConfig
                     */
                    public addCatalogAttribute(request: google.cloud.retail.v2alpha.IAddCatalogAttributeRequest, callback: google.cloud.retail.v2alpha.CatalogService.AddCatalogAttributeCallback): void;

                    /**
                     * Calls AddCatalogAttribute.
                     * @param request AddCatalogAttributeRequest message or plain object
                     * @returns Promise
                     */
                    public addCatalogAttribute(request: google.cloud.retail.v2alpha.IAddCatalogAttributeRequest): Promise<google.cloud.retail.v2alpha.AttributesConfig>;

                    /**
                     * Calls RemoveCatalogAttribute.
                     * @param request RemoveCatalogAttributeRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and AttributesConfig
                     */
                    public removeCatalogAttribute(request: google.cloud.retail.v2alpha.IRemoveCatalogAttributeRequest, callback: google.cloud.retail.v2alpha.CatalogService.RemoveCatalogAttributeCallback): void;

                    /**
                     * Calls RemoveCatalogAttribute.
                     * @param request RemoveCatalogAttributeRequest message or plain object
                     * @returns Promise
                     */
                    public removeCatalogAttribute(request: google.cloud.retail.v2alpha.IRemoveCatalogAttributeRequest): Promise<google.cloud.retail.v2alpha.AttributesConfig>;

                    /**
                     * Calls BatchRemoveCatalogAttributes.
                     * @param request BatchRemoveCatalogAttributesRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and BatchRemoveCatalogAttributesResponse
                     */
                    public batchRemoveCatalogAttributes(request: google.cloud.retail.v2alpha.IBatchRemoveCatalogAttributesRequest, callback: google.cloud.retail.v2alpha.CatalogService.BatchRemoveCatalogAttributesCallback): void;

                    /**
                     * Calls BatchRemoveCatalogAttributes.
                     * @param request BatchRemoveCatalogAttributesRequest message or plain object
                     * @returns Promise
                     */
                    public batchRemoveCatalogAttributes(request: google.cloud.retail.v2alpha.IBatchRemoveCatalogAttributesRequest): Promise<google.cloud.retail.v2alpha.BatchRemoveCatalogAttributesResponse>;

                    /**
                     * Calls ReplaceCatalogAttribute.
                     * @param request ReplaceCatalogAttributeRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and AttributesConfig
                     */
                    public replaceCatalogAttribute(request: google.cloud.retail.v2alpha.IReplaceCatalogAttributeRequest, callback: google.cloud.retail.v2alpha.CatalogService.ReplaceCatalogAttributeCallback): void;

                    /**
                     * Calls ReplaceCatalogAttribute.
                     * @param request ReplaceCatalogAttributeRequest message or plain object
                     * @returns Promise
                     */
                    public replaceCatalogAttribute(request: google.cloud.retail.v2alpha.IReplaceCatalogAttributeRequest): Promise<google.cloud.retail.v2alpha.AttributesConfig>;
                }

                namespace CatalogService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.CatalogService|listCatalogs}.
                     * @param error Error, if any
                     * @param [response] ListCatalogsResponse
                     */
                    type ListCatalogsCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.ListCatalogsResponse) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.CatalogService|updateCatalog}.
                     * @param error Error, if any
                     * @param [response] Catalog
                     */
                    type UpdateCatalogCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.Catalog) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.CatalogService|setDefaultBranch}.
                     * @param error Error, if any
                     * @param [response] Empty
                     */
                    type SetDefaultBranchCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.CatalogService|getDefaultBranch}.
                     * @param error Error, if any
                     * @param [response] GetDefaultBranchResponse
                     */
                    type GetDefaultBranchCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.GetDefaultBranchResponse) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.CatalogService|getCompletionConfig}.
                     * @param error Error, if any
                     * @param [response] CompletionConfig
                     */
                    type GetCompletionConfigCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.CompletionConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.CatalogService|updateCompletionConfig}.
                     * @param error Error, if any
                     * @param [response] CompletionConfig
                     */
                    type UpdateCompletionConfigCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.CompletionConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.CatalogService|getAttributesConfig}.
                     * @param error Error, if any
                     * @param [response] AttributesConfig
                     */
                    type GetAttributesConfigCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.AttributesConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.CatalogService|updateAttributesConfig}.
                     * @param error Error, if any
                     * @param [response] AttributesConfig
                     */
                    type UpdateAttributesConfigCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.AttributesConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.CatalogService|addCatalogAttribute}.
                     * @param error Error, if any
                     * @param [response] AttributesConfig
                     */
                    type AddCatalogAttributeCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.AttributesConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.CatalogService|removeCatalogAttribute}.
                     * @param error Error, if any
                     * @param [response] AttributesConfig
                     */
                    type RemoveCatalogAttributeCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.AttributesConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.CatalogService|batchRemoveCatalogAttributes}.
                     * @param error Error, if any
                     * @param [response] BatchRemoveCatalogAttributesResponse
                     */
                    type BatchRemoveCatalogAttributesCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.BatchRemoveCatalogAttributesResponse) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.CatalogService|replaceCatalogAttribute}.
                     * @param error Error, if any
                     * @param [response] AttributesConfig
                     */
                    type ReplaceCatalogAttributeCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.AttributesConfig) => void;
                }

                /** Properties of a ListCatalogsRequest. */
                interface IListCatalogsRequest {

                    /** ListCatalogsRequest parent */
                    parent?: (string|null);

                    /** ListCatalogsRequest pageSize */
                    pageSize?: (number|null);

                    /** ListCatalogsRequest pageToken */
                    pageToken?: (string|null);
                }

                /** Represents a ListCatalogsRequest. */
                class ListCatalogsRequest implements IListCatalogsRequest {

                    /**
                     * Constructs a new ListCatalogsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IListCatalogsRequest);

                    /** ListCatalogsRequest parent. */
                    public parent: string;

                    /** ListCatalogsRequest pageSize. */
                    public pageSize: number;

                    /** ListCatalogsRequest pageToken. */
                    public pageToken: string;

                    /**
                     * Creates a new ListCatalogsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListCatalogsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IListCatalogsRequest): google.cloud.retail.v2alpha.ListCatalogsRequest;

                    /**
                     * Encodes the specified ListCatalogsRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.ListCatalogsRequest.verify|verify} messages.
                     * @param message ListCatalogsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IListCatalogsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListCatalogsRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ListCatalogsRequest.verify|verify} messages.
                     * @param message ListCatalogsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IListCatalogsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListCatalogsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListCatalogsRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ListCatalogsRequest;

                    /**
                     * Decodes a ListCatalogsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListCatalogsRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.ListCatalogsRequest;

                    /**
                     * Verifies a ListCatalogsRequest message.
                     * @param message Plain 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 ListCatalogsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListCatalogsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ListCatalogsRequest;

                    /**
                     * Creates a plain object from a ListCatalogsRequest message. Also converts values to other types if specified.
                     * @param message ListCatalogsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ListCatalogsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListCatalogsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListCatalogsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListCatalogsResponse. */
                interface IListCatalogsResponse {

                    /** ListCatalogsResponse catalogs */
                    catalogs?: (google.cloud.retail.v2alpha.ICatalog[]|null);

                    /** ListCatalogsResponse nextPageToken */
                    nextPageToken?: (string|null);
                }

                /** Represents a ListCatalogsResponse. */
                class ListCatalogsResponse implements IListCatalogsResponse {

                    /**
                     * Constructs a new ListCatalogsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IListCatalogsResponse);

                    /** ListCatalogsResponse catalogs. */
                    public catalogs: google.cloud.retail.v2alpha.ICatalog[];

                    /** ListCatalogsResponse nextPageToken. */
                    public nextPageToken: string;

                    /**
                     * Creates a new ListCatalogsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListCatalogsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IListCatalogsResponse): google.cloud.retail.v2alpha.ListCatalogsResponse;

                    /**
                     * Encodes the specified ListCatalogsResponse message. Does not implicitly {@link google.cloud.retail.v2alpha.ListCatalogsResponse.verify|verify} messages.
                     * @param message ListCatalogsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IListCatalogsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListCatalogsResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ListCatalogsResponse.verify|verify} messages.
                     * @param message ListCatalogsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IListCatalogsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListCatalogsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListCatalogsResponse
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ListCatalogsResponse;

                    /**
                     * Decodes a ListCatalogsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListCatalogsResponse
                     * @throws {Error} If the payload 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.retail.v2alpha.ListCatalogsResponse;

                    /**
                     * Verifies a ListCatalogsResponse message.
                     * @param message Plain 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 ListCatalogsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListCatalogsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ListCatalogsResponse;

                    /**
                     * Creates a plain object from a ListCatalogsResponse message. Also converts values to other types if specified.
                     * @param message ListCatalogsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ListCatalogsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListCatalogsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListCatalogsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateCatalogRequest. */
                interface IUpdateCatalogRequest {

                    /** UpdateCatalogRequest catalog */
                    catalog?: (google.cloud.retail.v2alpha.ICatalog|null);

                    /** UpdateCatalogRequest updateMask */
                    updateMask?: (google.protobuf.IFieldMask|null);
                }

                /** Represents an UpdateCatalogRequest. */
                class UpdateCatalogRequest implements IUpdateCatalogRequest {

                    /**
                     * Constructs a new UpdateCatalogRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IUpdateCatalogRequest);

                    /** UpdateCatalogRequest catalog. */
                    public catalog?: (google.cloud.retail.v2alpha.ICatalog|null);

                    /** UpdateCatalogRequest updateMask. */
                    public updateMask?: (google.protobuf.IFieldMask|null);

                    /**
                     * Creates a new UpdateCatalogRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateCatalogRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IUpdateCatalogRequest): google.cloud.retail.v2alpha.UpdateCatalogRequest;

                    /**
                     * Encodes the specified UpdateCatalogRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.UpdateCatalogRequest.verify|verify} messages.
                     * @param message UpdateCatalogRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IUpdateCatalogRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateCatalogRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.UpdateCatalogRequest.verify|verify} messages.
                     * @param message UpdateCatalogRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IUpdateCatalogRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateCatalogRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateCatalogRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.UpdateCatalogRequest;

                    /**
                     * Decodes an UpdateCatalogRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateCatalogRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.UpdateCatalogRequest;

                    /**
                     * Verifies an UpdateCatalogRequest message.
                     * @param message Plain 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 UpdateCatalogRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateCatalogRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.UpdateCatalogRequest;

                    /**
                     * Creates a plain object from an UpdateCatalogRequest message. Also converts values to other types if specified.
                     * @param message UpdateCatalogRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.UpdateCatalogRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateCatalogRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateCatalogRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SetDefaultBranchRequest. */
                interface ISetDefaultBranchRequest {

                    /** SetDefaultBranchRequest catalog */
                    catalog?: (string|null);

                    /** SetDefaultBranchRequest branchId */
                    branchId?: (string|null);

                    /** SetDefaultBranchRequest note */
                    note?: (string|null);

                    /** SetDefaultBranchRequest force */
                    force?: (boolean|null);
                }

                /** Represents a SetDefaultBranchRequest. */
                class SetDefaultBranchRequest implements ISetDefaultBranchRequest {

                    /**
                     * Constructs a new SetDefaultBranchRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.ISetDefaultBranchRequest);

                    /** SetDefaultBranchRequest catalog. */
                    public catalog: string;

                    /** SetDefaultBranchRequest branchId. */
                    public branchId: string;

                    /** SetDefaultBranchRequest note. */
                    public note: string;

                    /** SetDefaultBranchRequest force. */
                    public force: boolean;

                    /**
                     * Creates a new SetDefaultBranchRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SetDefaultBranchRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.ISetDefaultBranchRequest): google.cloud.retail.v2alpha.SetDefaultBranchRequest;

                    /**
                     * Encodes the specified SetDefaultBranchRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.SetDefaultBranchRequest.verify|verify} messages.
                     * @param message SetDefaultBranchRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.ISetDefaultBranchRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SetDefaultBranchRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.SetDefaultBranchRequest.verify|verify} messages.
                     * @param message SetDefaultBranchRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.ISetDefaultBranchRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SetDefaultBranchRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SetDefaultBranchRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.SetDefaultBranchRequest;

                    /**
                     * Decodes a SetDefaultBranchRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SetDefaultBranchRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.SetDefaultBranchRequest;

                    /**
                     * Verifies a SetDefaultBranchRequest message.
                     * @param message Plain 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 SetDefaultBranchRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SetDefaultBranchRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.SetDefaultBranchRequest;

                    /**
                     * Creates a plain object from a SetDefaultBranchRequest message. Also converts values to other types if specified.
                     * @param message SetDefaultBranchRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.SetDefaultBranchRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SetDefaultBranchRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SetDefaultBranchRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetDefaultBranchRequest. */
                interface IGetDefaultBranchRequest {

                    /** GetDefaultBranchRequest catalog */
                    catalog?: (string|null);
                }

                /** Represents a GetDefaultBranchRequest. */
                class GetDefaultBranchRequest implements IGetDefaultBranchRequest {

                    /**
                     * Constructs a new GetDefaultBranchRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IGetDefaultBranchRequest);

                    /** GetDefaultBranchRequest catalog. */
                    public catalog: string;

                    /**
                     * Creates a new GetDefaultBranchRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetDefaultBranchRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IGetDefaultBranchRequest): google.cloud.retail.v2alpha.GetDefaultBranchRequest;

                    /**
                     * Encodes the specified GetDefaultBranchRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.GetDefaultBranchRequest.verify|verify} messages.
                     * @param message GetDefaultBranchRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IGetDefaultBranchRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetDefaultBranchRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.GetDefaultBranchRequest.verify|verify} messages.
                     * @param message GetDefaultBranchRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IGetDefaultBranchRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetDefaultBranchRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetDefaultBranchRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.GetDefaultBranchRequest;

                    /**
                     * Decodes a GetDefaultBranchRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetDefaultBranchRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.GetDefaultBranchRequest;

                    /**
                     * Verifies a GetDefaultBranchRequest message.
                     * @param message Plain 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 GetDefaultBranchRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetDefaultBranchRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.GetDefaultBranchRequest;

                    /**
                     * Creates a plain object from a GetDefaultBranchRequest message. Also converts values to other types if specified.
                     * @param message GetDefaultBranchRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.GetDefaultBranchRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetDefaultBranchRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetDefaultBranchRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetDefaultBranchResponse. */
                interface IGetDefaultBranchResponse {

                    /** GetDefaultBranchResponse branch */
                    branch?: (string|null);

                    /** GetDefaultBranchResponse setTime */
                    setTime?: (google.protobuf.ITimestamp|null);

                    /** GetDefaultBranchResponse note */
                    note?: (string|null);
                }

                /** Represents a GetDefaultBranchResponse. */
                class GetDefaultBranchResponse implements IGetDefaultBranchResponse {

                    /**
                     * Constructs a new GetDefaultBranchResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IGetDefaultBranchResponse);

                    /** GetDefaultBranchResponse branch. */
                    public branch: string;

                    /** GetDefaultBranchResponse setTime. */
                    public setTime?: (google.protobuf.ITimestamp|null);

                    /** GetDefaultBranchResponse note. */
                    public note: string;

                    /**
                     * Creates a new GetDefaultBranchResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetDefaultBranchResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IGetDefaultBranchResponse): google.cloud.retail.v2alpha.GetDefaultBranchResponse;

                    /**
                     * Encodes the specified GetDefaultBranchResponse message. Does not implicitly {@link google.cloud.retail.v2alpha.GetDefaultBranchResponse.verify|verify} messages.
                     * @param message GetDefaultBranchResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IGetDefaultBranchResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetDefaultBranchResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.GetDefaultBranchResponse.verify|verify} messages.
                     * @param message GetDefaultBranchResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IGetDefaultBranchResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetDefaultBranchResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetDefaultBranchResponse
                     * @throws {Error} If the payload is not 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.retail.v2alpha.GetDefaultBranchResponse;

                    /**
                     * Decodes a GetDefaultBranchResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetDefaultBranchResponse
                     * @throws {Error} If the payload 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.retail.v2alpha.GetDefaultBranchResponse;

                    /**
                     * Verifies a GetDefaultBranchResponse message.
                     * @param message Plain 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 GetDefaultBranchResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetDefaultBranchResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.GetDefaultBranchResponse;

                    /**
                     * Creates a plain object from a GetDefaultBranchResponse message. Also converts values to other types if specified.
                     * @param message GetDefaultBranchResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.GetDefaultBranchResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetDefaultBranchResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetDefaultBranchResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetCompletionConfigRequest. */
                interface IGetCompletionConfigRequest {

                    /** GetCompletionConfigRequest name */
                    name?: (string|null);
                }

                /** Represents a GetCompletionConfigRequest. */
                class GetCompletionConfigRequest implements IGetCompletionConfigRequest {

                    /**
                     * Constructs a new GetCompletionConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IGetCompletionConfigRequest);

                    /** GetCompletionConfigRequest name. */
                    public name: string;

                    /**
                     * Creates a new GetCompletionConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetCompletionConfigRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IGetCompletionConfigRequest): google.cloud.retail.v2alpha.GetCompletionConfigRequest;

                    /**
                     * Encodes the specified GetCompletionConfigRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.GetCompletionConfigRequest.verify|verify} messages.
                     * @param message GetCompletionConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IGetCompletionConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetCompletionConfigRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.GetCompletionConfigRequest.verify|verify} messages.
                     * @param message GetCompletionConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IGetCompletionConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetCompletionConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetCompletionConfigRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.GetCompletionConfigRequest;

                    /**
                     * Decodes a GetCompletionConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetCompletionConfigRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.GetCompletionConfigRequest;

                    /**
                     * Verifies a GetCompletionConfigRequest message.
                     * @param message Plain 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 GetCompletionConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetCompletionConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.GetCompletionConfigRequest;

                    /**
                     * Creates a plain object from a GetCompletionConfigRequest message. Also converts values to other types if specified.
                     * @param message GetCompletionConfigRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.GetCompletionConfigRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetCompletionConfigRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetCompletionConfigRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateCompletionConfigRequest. */
                interface IUpdateCompletionConfigRequest {

                    /** UpdateCompletionConfigRequest completionConfig */
                    completionConfig?: (google.cloud.retail.v2alpha.ICompletionConfig|null);

                    /** UpdateCompletionConfigRequest updateMask */
                    updateMask?: (google.protobuf.IFieldMask|null);
                }

                /** Represents an UpdateCompletionConfigRequest. */
                class UpdateCompletionConfigRequest implements IUpdateCompletionConfigRequest {

                    /**
                     * Constructs a new UpdateCompletionConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IUpdateCompletionConfigRequest);

                    /** UpdateCompletionConfigRequest completionConfig. */
                    public completionConfig?: (google.cloud.retail.v2alpha.ICompletionConfig|null);

                    /** UpdateCompletionConfigRequest updateMask. */
                    public updateMask?: (google.protobuf.IFieldMask|null);

                    /**
                     * Creates a new UpdateCompletionConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateCompletionConfigRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IUpdateCompletionConfigRequest): google.cloud.retail.v2alpha.UpdateCompletionConfigRequest;

                    /**
                     * Encodes the specified UpdateCompletionConfigRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.UpdateCompletionConfigRequest.verify|verify} messages.
                     * @param message UpdateCompletionConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IUpdateCompletionConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateCompletionConfigRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.UpdateCompletionConfigRequest.verify|verify} messages.
                     * @param message UpdateCompletionConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IUpdateCompletionConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateCompletionConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateCompletionConfigRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.UpdateCompletionConfigRequest;

                    /**
                     * Decodes an UpdateCompletionConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateCompletionConfigRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.UpdateCompletionConfigRequest;

                    /**
                     * Verifies an UpdateCompletionConfigRequest message.
                     * @param message Plain 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 UpdateCompletionConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateCompletionConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.UpdateCompletionConfigRequest;

                    /**
                     * Creates a plain object from an UpdateCompletionConfigRequest message. Also converts values to other types if specified.
                     * @param message UpdateCompletionConfigRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.UpdateCompletionConfigRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateCompletionConfigRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateCompletionConfigRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetAttributesConfigRequest. */
                interface IGetAttributesConfigRequest {

                    /** GetAttributesConfigRequest name */
                    name?: (string|null);
                }

                /** Represents a GetAttributesConfigRequest. */
                class GetAttributesConfigRequest implements IGetAttributesConfigRequest {

                    /**
                     * Constructs a new GetAttributesConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IGetAttributesConfigRequest);

                    /** GetAttributesConfigRequest name. */
                    public name: string;

                    /**
                     * Creates a new GetAttributesConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetAttributesConfigRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IGetAttributesConfigRequest): google.cloud.retail.v2alpha.GetAttributesConfigRequest;

                    /**
                     * Encodes the specified GetAttributesConfigRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.GetAttributesConfigRequest.verify|verify} messages.
                     * @param message GetAttributesConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IGetAttributesConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetAttributesConfigRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.GetAttributesConfigRequest.verify|verify} messages.
                     * @param message GetAttributesConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IGetAttributesConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetAttributesConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetAttributesConfigRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.GetAttributesConfigRequest;

                    /**
                     * Decodes a GetAttributesConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetAttributesConfigRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.GetAttributesConfigRequest;

                    /**
                     * Verifies a GetAttributesConfigRequest message.
                     * @param message Plain 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 GetAttributesConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetAttributesConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.GetAttributesConfigRequest;

                    /**
                     * Creates a plain object from a GetAttributesConfigRequest message. Also converts values to other types if specified.
                     * @param message GetAttributesConfigRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.GetAttributesConfigRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetAttributesConfigRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetAttributesConfigRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateAttributesConfigRequest. */
                interface IUpdateAttributesConfigRequest {

                    /** UpdateAttributesConfigRequest attributesConfig */
                    attributesConfig?: (google.cloud.retail.v2alpha.IAttributesConfig|null);

                    /** UpdateAttributesConfigRequest updateMask */
                    updateMask?: (google.protobuf.IFieldMask|null);
                }

                /** Represents an UpdateAttributesConfigRequest. */
                class UpdateAttributesConfigRequest implements IUpdateAttributesConfigRequest {

                    /**
                     * Constructs a new UpdateAttributesConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IUpdateAttributesConfigRequest);

                    /** UpdateAttributesConfigRequest attributesConfig. */
                    public attributesConfig?: (google.cloud.retail.v2alpha.IAttributesConfig|null);

                    /** UpdateAttributesConfigRequest updateMask. */
                    public updateMask?: (google.protobuf.IFieldMask|null);

                    /**
                     * Creates a new UpdateAttributesConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateAttributesConfigRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IUpdateAttributesConfigRequest): google.cloud.retail.v2alpha.UpdateAttributesConfigRequest;

                    /**
                     * Encodes the specified UpdateAttributesConfigRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.UpdateAttributesConfigRequest.verify|verify} messages.
                     * @param message UpdateAttributesConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IUpdateAttributesConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateAttributesConfigRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.UpdateAttributesConfigRequest.verify|verify} messages.
                     * @param message UpdateAttributesConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IUpdateAttributesConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateAttributesConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateAttributesConfigRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.UpdateAttributesConfigRequest;

                    /**
                     * Decodes an UpdateAttributesConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateAttributesConfigRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.UpdateAttributesConfigRequest;

                    /**
                     * Verifies an UpdateAttributesConfigRequest message.
                     * @param message Plain 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 UpdateAttributesConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateAttributesConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.UpdateAttributesConfigRequest;

                    /**
                     * Creates a plain object from an UpdateAttributesConfigRequest message. Also converts values to other types if specified.
                     * @param message UpdateAttributesConfigRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.UpdateAttributesConfigRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateAttributesConfigRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateAttributesConfigRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an AddCatalogAttributeRequest. */
                interface IAddCatalogAttributeRequest {

                    /** AddCatalogAttributeRequest attributesConfig */
                    attributesConfig?: (string|null);

                    /** AddCatalogAttributeRequest catalogAttribute */
                    catalogAttribute?: (google.cloud.retail.v2alpha.ICatalogAttribute|null);
                }

                /** Represents an AddCatalogAttributeRequest. */
                class AddCatalogAttributeRequest implements IAddCatalogAttributeRequest {

                    /**
                     * Constructs a new AddCatalogAttributeRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IAddCatalogAttributeRequest);

                    /** AddCatalogAttributeRequest attributesConfig. */
                    public attributesConfig: string;

                    /** AddCatalogAttributeRequest catalogAttribute. */
                    public catalogAttribute?: (google.cloud.retail.v2alpha.ICatalogAttribute|null);

                    /**
                     * Creates a new AddCatalogAttributeRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns AddCatalogAttributeRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IAddCatalogAttributeRequest): google.cloud.retail.v2alpha.AddCatalogAttributeRequest;

                    /**
                     * Encodes the specified AddCatalogAttributeRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.AddCatalogAttributeRequest.verify|verify} messages.
                     * @param message AddCatalogAttributeRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IAddCatalogAttributeRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified AddCatalogAttributeRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.AddCatalogAttributeRequest.verify|verify} messages.
                     * @param message AddCatalogAttributeRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IAddCatalogAttributeRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an AddCatalogAttributeRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns AddCatalogAttributeRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.AddCatalogAttributeRequest;

                    /**
                     * Decodes an AddCatalogAttributeRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns AddCatalogAttributeRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.AddCatalogAttributeRequest;

                    /**
                     * Verifies an AddCatalogAttributeRequest message.
                     * @param message Plain 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 AddCatalogAttributeRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns AddCatalogAttributeRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.AddCatalogAttributeRequest;

                    /**
                     * Creates a plain object from an AddCatalogAttributeRequest message. Also converts values to other types if specified.
                     * @param message AddCatalogAttributeRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.AddCatalogAttributeRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this AddCatalogAttributeRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for AddCatalogAttributeRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RemoveCatalogAttributeRequest. */
                interface IRemoveCatalogAttributeRequest {

                    /** RemoveCatalogAttributeRequest attributesConfig */
                    attributesConfig?: (string|null);

                    /** RemoveCatalogAttributeRequest key */
                    key?: (string|null);
                }

                /** Represents a RemoveCatalogAttributeRequest. */
                class RemoveCatalogAttributeRequest implements IRemoveCatalogAttributeRequest {

                    /**
                     * Constructs a new RemoveCatalogAttributeRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IRemoveCatalogAttributeRequest);

                    /** RemoveCatalogAttributeRequest attributesConfig. */
                    public attributesConfig: string;

                    /** RemoveCatalogAttributeRequest key. */
                    public key: string;

                    /**
                     * Creates a new RemoveCatalogAttributeRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RemoveCatalogAttributeRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IRemoveCatalogAttributeRequest): google.cloud.retail.v2alpha.RemoveCatalogAttributeRequest;

                    /**
                     * Encodes the specified RemoveCatalogAttributeRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.RemoveCatalogAttributeRequest.verify|verify} messages.
                     * @param message RemoveCatalogAttributeRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IRemoveCatalogAttributeRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RemoveCatalogAttributeRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.RemoveCatalogAttributeRequest.verify|verify} messages.
                     * @param message RemoveCatalogAttributeRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IRemoveCatalogAttributeRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RemoveCatalogAttributeRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RemoveCatalogAttributeRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.RemoveCatalogAttributeRequest;

                    /**
                     * Decodes a RemoveCatalogAttributeRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RemoveCatalogAttributeRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.RemoveCatalogAttributeRequest;

                    /**
                     * Verifies a RemoveCatalogAttributeRequest message.
                     * @param message Plain 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 RemoveCatalogAttributeRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RemoveCatalogAttributeRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.RemoveCatalogAttributeRequest;

                    /**
                     * Creates a plain object from a RemoveCatalogAttributeRequest message. Also converts values to other types if specified.
                     * @param message RemoveCatalogAttributeRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.RemoveCatalogAttributeRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RemoveCatalogAttributeRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RemoveCatalogAttributeRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a BatchRemoveCatalogAttributesRequest. */
                interface IBatchRemoveCatalogAttributesRequest {

                    /** BatchRemoveCatalogAttributesRequest attributesConfig */
                    attributesConfig?: (string|null);

                    /** BatchRemoveCatalogAttributesRequest attributeKeys */
                    attributeKeys?: (string[]|null);
                }

                /** Represents a BatchRemoveCatalogAttributesRequest. */
                class BatchRemoveCatalogAttributesRequest implements IBatchRemoveCatalogAttributesRequest {

                    /**
                     * Constructs a new BatchRemoveCatalogAttributesRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IBatchRemoveCatalogAttributesRequest);

                    /** BatchRemoveCatalogAttributesRequest attributesConfig. */
                    public attributesConfig: string;

                    /** BatchRemoveCatalogAttributesRequest attributeKeys. */
                    public attributeKeys: string[];

                    /**
                     * Creates a new BatchRemoveCatalogAttributesRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns BatchRemoveCatalogAttributesRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IBatchRemoveCatalogAttributesRequest): google.cloud.retail.v2alpha.BatchRemoveCatalogAttributesRequest;

                    /**
                     * Encodes the specified BatchRemoveCatalogAttributesRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.BatchRemoveCatalogAttributesRequest.verify|verify} messages.
                     * @param message BatchRemoveCatalogAttributesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IBatchRemoveCatalogAttributesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified BatchRemoveCatalogAttributesRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.BatchRemoveCatalogAttributesRequest.verify|verify} messages.
                     * @param message BatchRemoveCatalogAttributesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IBatchRemoveCatalogAttributesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a BatchRemoveCatalogAttributesRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns BatchRemoveCatalogAttributesRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.BatchRemoveCatalogAttributesRequest;

                    /**
                     * Decodes a BatchRemoveCatalogAttributesRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns BatchRemoveCatalogAttributesRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.BatchRemoveCatalogAttributesRequest;

                    /**
                     * Verifies a BatchRemoveCatalogAttributesRequest message.
                     * @param message Plain 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 BatchRemoveCatalogAttributesRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns BatchRemoveCatalogAttributesRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.BatchRemoveCatalogAttributesRequest;

                    /**
                     * Creates a plain object from a BatchRemoveCatalogAttributesRequest message. Also converts values to other types if specified.
                     * @param message BatchRemoveCatalogAttributesRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.BatchRemoveCatalogAttributesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this BatchRemoveCatalogAttributesRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for BatchRemoveCatalogAttributesRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a BatchRemoveCatalogAttributesResponse. */
                interface IBatchRemoveCatalogAttributesResponse {

                    /** BatchRemoveCatalogAttributesResponse deletedCatalogAttributes */
                    deletedCatalogAttributes?: (string[]|null);

                    /** BatchRemoveCatalogAttributesResponse resetCatalogAttributes */
                    resetCatalogAttributes?: (string[]|null);
                }

                /** Represents a BatchRemoveCatalogAttributesResponse. */
                class BatchRemoveCatalogAttributesResponse implements IBatchRemoveCatalogAttributesResponse {

                    /**
                     * Constructs a new BatchRemoveCatalogAttributesResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IBatchRemoveCatalogAttributesResponse);

                    /** BatchRemoveCatalogAttributesResponse deletedCatalogAttributes. */
                    public deletedCatalogAttributes: string[];

                    /** BatchRemoveCatalogAttributesResponse resetCatalogAttributes. */
                    public resetCatalogAttributes: string[];

                    /**
                     * Creates a new BatchRemoveCatalogAttributesResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns BatchRemoveCatalogAttributesResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IBatchRemoveCatalogAttributesResponse): google.cloud.retail.v2alpha.BatchRemoveCatalogAttributesResponse;

                    /**
                     * Encodes the specified BatchRemoveCatalogAttributesResponse message. Does not implicitly {@link google.cloud.retail.v2alpha.BatchRemoveCatalogAttributesResponse.verify|verify} messages.
                     * @param message BatchRemoveCatalogAttributesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IBatchRemoveCatalogAttributesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified BatchRemoveCatalogAttributesResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.BatchRemoveCatalogAttributesResponse.verify|verify} messages.
                     * @param message BatchRemoveCatalogAttributesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IBatchRemoveCatalogAttributesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a BatchRemoveCatalogAttributesResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns BatchRemoveCatalogAttributesResponse
                     * @throws {Error} If the payload is not 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.retail.v2alpha.BatchRemoveCatalogAttributesResponse;

                    /**
                     * Decodes a BatchRemoveCatalogAttributesResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns BatchRemoveCatalogAttributesResponse
                     * @throws {Error} If the payload 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.retail.v2alpha.BatchRemoveCatalogAttributesResponse;

                    /**
                     * Verifies a BatchRemoveCatalogAttributesResponse message.
                     * @param message Plain 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 BatchRemoveCatalogAttributesResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns BatchRemoveCatalogAttributesResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.BatchRemoveCatalogAttributesResponse;

                    /**
                     * Creates a plain object from a BatchRemoveCatalogAttributesResponse message. Also converts values to other types if specified.
                     * @param message BatchRemoveCatalogAttributesResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.BatchRemoveCatalogAttributesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this BatchRemoveCatalogAttributesResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for BatchRemoveCatalogAttributesResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ReplaceCatalogAttributeRequest. */
                interface IReplaceCatalogAttributeRequest {

                    /** ReplaceCatalogAttributeRequest attributesConfig */
                    attributesConfig?: (string|null);

                    /** ReplaceCatalogAttributeRequest catalogAttribute */
                    catalogAttribute?: (google.cloud.retail.v2alpha.ICatalogAttribute|null);

                    /** ReplaceCatalogAttributeRequest updateMask */
                    updateMask?: (google.protobuf.IFieldMask|null);
                }

                /** Represents a ReplaceCatalogAttributeRequest. */
                class ReplaceCatalogAttributeRequest implements IReplaceCatalogAttributeRequest {

                    /**
                     * Constructs a new ReplaceCatalogAttributeRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IReplaceCatalogAttributeRequest);

                    /** ReplaceCatalogAttributeRequest attributesConfig. */
                    public attributesConfig: string;

                    /** ReplaceCatalogAttributeRequest catalogAttribute. */
                    public catalogAttribute?: (google.cloud.retail.v2alpha.ICatalogAttribute|null);

                    /** ReplaceCatalogAttributeRequest updateMask. */
                    public updateMask?: (google.protobuf.IFieldMask|null);

                    /**
                     * Creates a new ReplaceCatalogAttributeRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ReplaceCatalogAttributeRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IReplaceCatalogAttributeRequest): google.cloud.retail.v2alpha.ReplaceCatalogAttributeRequest;

                    /**
                     * Encodes the specified ReplaceCatalogAttributeRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.ReplaceCatalogAttributeRequest.verify|verify} messages.
                     * @param message ReplaceCatalogAttributeRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IReplaceCatalogAttributeRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ReplaceCatalogAttributeRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ReplaceCatalogAttributeRequest.verify|verify} messages.
                     * @param message ReplaceCatalogAttributeRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IReplaceCatalogAttributeRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ReplaceCatalogAttributeRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ReplaceCatalogAttributeRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ReplaceCatalogAttributeRequest;

                    /**
                     * Decodes a ReplaceCatalogAttributeRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ReplaceCatalogAttributeRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.ReplaceCatalogAttributeRequest;

                    /**
                     * Verifies a ReplaceCatalogAttributeRequest message.
                     * @param message Plain 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 ReplaceCatalogAttributeRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ReplaceCatalogAttributeRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ReplaceCatalogAttributeRequest;

                    /**
                     * Creates a plain object from a ReplaceCatalogAttributeRequest message. Also converts values to other types if specified.
                     * @param message ReplaceCatalogAttributeRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ReplaceCatalogAttributeRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ReplaceCatalogAttributeRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ReplaceCatalogAttributeRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Represents a CompletionService */
                class CompletionService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new CompletionService 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 CompletionService 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): CompletionService;

                    /**
                     * Calls CompleteQuery.
                     * @param request CompleteQueryRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and CompleteQueryResponse
                     */
                    public completeQuery(request: google.cloud.retail.v2alpha.ICompleteQueryRequest, callback: google.cloud.retail.v2alpha.CompletionService.CompleteQueryCallback): void;

                    /**
                     * Calls CompleteQuery.
                     * @param request CompleteQueryRequest message or plain object
                     * @returns Promise
                     */
                    public completeQuery(request: google.cloud.retail.v2alpha.ICompleteQueryRequest): Promise<google.cloud.retail.v2alpha.CompleteQueryResponse>;

                    /**
                     * Calls ImportCompletionData.
                     * @param request ImportCompletionDataRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public importCompletionData(request: google.cloud.retail.v2alpha.IImportCompletionDataRequest, callback: google.cloud.retail.v2alpha.CompletionService.ImportCompletionDataCallback): void;

                    /**
                     * Calls ImportCompletionData.
                     * @param request ImportCompletionDataRequest message or plain object
                     * @returns Promise
                     */
                    public importCompletionData(request: google.cloud.retail.v2alpha.IImportCompletionDataRequest): Promise<google.longrunning.Operation>;
                }

                namespace CompletionService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.CompletionService|completeQuery}.
                     * @param error Error, if any
                     * @param [response] CompleteQueryResponse
                     */
                    type CompleteQueryCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.CompleteQueryResponse) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.CompletionService|importCompletionData}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type ImportCompletionDataCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;
                }

                /** Properties of a CompleteQueryRequest. */
                interface ICompleteQueryRequest {

                    /** CompleteQueryRequest catalog */
                    catalog?: (string|null);

                    /** CompleteQueryRequest query */
                    query?: (string|null);

                    /** CompleteQueryRequest visitorId */
                    visitorId?: (string|null);

                    /** CompleteQueryRequest languageCodes */
                    languageCodes?: (string[]|null);

                    /** CompleteQueryRequest deviceType */
                    deviceType?: (string|null);

                    /** CompleteQueryRequest dataset */
                    dataset?: (string|null);

                    /** CompleteQueryRequest maxSuggestions */
                    maxSuggestions?: (number|null);

                    /** CompleteQueryRequest enableAttributeSuggestions */
                    enableAttributeSuggestions?: (boolean|null);

                    /** CompleteQueryRequest entity */
                    entity?: (string|null);
                }

                /** Represents a CompleteQueryRequest. */
                class CompleteQueryRequest implements ICompleteQueryRequest {

                    /**
                     * Constructs a new CompleteQueryRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.ICompleteQueryRequest);

                    /** CompleteQueryRequest catalog. */
                    public catalog: string;

                    /** CompleteQueryRequest query. */
                    public query: string;

                    /** CompleteQueryRequest visitorId. */
                    public visitorId: string;

                    /** CompleteQueryRequest languageCodes. */
                    public languageCodes: string[];

                    /** CompleteQueryRequest deviceType. */
                    public deviceType: string;

                    /** CompleteQueryRequest dataset. */
                    public dataset: string;

                    /** CompleteQueryRequest maxSuggestions. */
                    public maxSuggestions: number;

                    /** CompleteQueryRequest enableAttributeSuggestions. */
                    public enableAttributeSuggestions: boolean;

                    /** CompleteQueryRequest entity. */
                    public entity: string;

                    /**
                     * Creates a new CompleteQueryRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CompleteQueryRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.ICompleteQueryRequest): google.cloud.retail.v2alpha.CompleteQueryRequest;

                    /**
                     * Encodes the specified CompleteQueryRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.CompleteQueryRequest.verify|verify} messages.
                     * @param message CompleteQueryRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.ICompleteQueryRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CompleteQueryRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.CompleteQueryRequest.verify|verify} messages.
                     * @param message CompleteQueryRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.ICompleteQueryRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CompleteQueryRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CompleteQueryRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.CompleteQueryRequest;

                    /**
                     * Decodes a CompleteQueryRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CompleteQueryRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.CompleteQueryRequest;

                    /**
                     * Verifies a CompleteQueryRequest message.
                     * @param message Plain 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 CompleteQueryRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CompleteQueryRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.CompleteQueryRequest;

                    /**
                     * Creates a plain object from a CompleteQueryRequest message. Also converts values to other types if specified.
                     * @param message CompleteQueryRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.CompleteQueryRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CompleteQueryRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CompleteQueryRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CompleteQueryResponse. */
                interface ICompleteQueryResponse {

                    /** CompleteQueryResponse completionResults */
                    completionResults?: (google.cloud.retail.v2alpha.CompleteQueryResponse.ICompletionResult[]|null);

                    /** CompleteQueryResponse attributionToken */
                    attributionToken?: (string|null);

                    /** CompleteQueryResponse recentSearchResults */
                    recentSearchResults?: (google.cloud.retail.v2alpha.CompleteQueryResponse.IRecentSearchResult[]|null);

                    /** CompleteQueryResponse attributeResults */
                    attributeResults?: ({ [k: string]: google.cloud.retail.v2alpha.CompleteQueryResponse.IAttributeResult }|null);
                }

                /** Represents a CompleteQueryResponse. */
                class CompleteQueryResponse implements ICompleteQueryResponse {

                    /**
                     * Constructs a new CompleteQueryResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.ICompleteQueryResponse);

                    /** CompleteQueryResponse completionResults. */
                    public completionResults: google.cloud.retail.v2alpha.CompleteQueryResponse.ICompletionResult[];

                    /** CompleteQueryResponse attributionToken. */
                    public attributionToken: string;

                    /** CompleteQueryResponse recentSearchResults. */
                    public recentSearchResults: google.cloud.retail.v2alpha.CompleteQueryResponse.IRecentSearchResult[];

                    /** CompleteQueryResponse attributeResults. */
                    public attributeResults: { [k: string]: google.cloud.retail.v2alpha.CompleteQueryResponse.IAttributeResult };

                    /**
                     * Creates a new CompleteQueryResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CompleteQueryResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.ICompleteQueryResponse): google.cloud.retail.v2alpha.CompleteQueryResponse;

                    /**
                     * Encodes the specified CompleteQueryResponse message. Does not implicitly {@link google.cloud.retail.v2alpha.CompleteQueryResponse.verify|verify} messages.
                     * @param message CompleteQueryResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.ICompleteQueryResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CompleteQueryResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.CompleteQueryResponse.verify|verify} messages.
                     * @param message CompleteQueryResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.ICompleteQueryResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CompleteQueryResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CompleteQueryResponse
                     * @throws {Error} If the payload is not 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.retail.v2alpha.CompleteQueryResponse;

                    /**
                     * Decodes a CompleteQueryResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CompleteQueryResponse
                     * @throws {Error} If the payload 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.retail.v2alpha.CompleteQueryResponse;

                    /**
                     * Verifies a CompleteQueryResponse message.
                     * @param message Plain 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 CompleteQueryResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CompleteQueryResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.CompleteQueryResponse;

                    /**
                     * Creates a plain object from a CompleteQueryResponse message. Also converts values to other types if specified.
                     * @param message CompleteQueryResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.CompleteQueryResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CompleteQueryResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CompleteQueryResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace CompleteQueryResponse {

                    /** Properties of a CompletionResult. */
                    interface ICompletionResult {

                        /** CompletionResult suggestion */
                        suggestion?: (string|null);

                        /** CompletionResult attributes */
                        attributes?: ({ [k: string]: google.cloud.retail.v2alpha.ICustomAttribute }|null);

                        /** CompletionResult facets */
                        facets?: (google.cloud.retail.v2alpha.SearchResponse.IFacet[]|null);

                        /** CompletionResult totalProductCount */
                        totalProductCount?: (number|null);
                    }

                    /** Represents a CompletionResult. */
                    class CompletionResult implements ICompletionResult {

                        /**
                         * Constructs a new CompletionResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.CompleteQueryResponse.ICompletionResult);

                        /** CompletionResult suggestion. */
                        public suggestion: string;

                        /** CompletionResult attributes. */
                        public attributes: { [k: string]: google.cloud.retail.v2alpha.ICustomAttribute };

                        /** CompletionResult facets. */
                        public facets: google.cloud.retail.v2alpha.SearchResponse.IFacet[];

                        /** CompletionResult totalProductCount. */
                        public totalProductCount: number;

                        /**
                         * Creates a new CompletionResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CompletionResult instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.CompleteQueryResponse.ICompletionResult): google.cloud.retail.v2alpha.CompleteQueryResponse.CompletionResult;

                        /**
                         * Encodes the specified CompletionResult message. Does not implicitly {@link google.cloud.retail.v2alpha.CompleteQueryResponse.CompletionResult.verify|verify} messages.
                         * @param message CompletionResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.CompleteQueryResponse.ICompletionResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CompletionResult message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.CompleteQueryResponse.CompletionResult.verify|verify} messages.
                         * @param message CompletionResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.CompleteQueryResponse.ICompletionResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CompletionResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CompletionResult
                         * @throws {Error} If the payload is not 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.retail.v2alpha.CompleteQueryResponse.CompletionResult;

                        /**
                         * Decodes a CompletionResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CompletionResult
                         * @throws {Error} If the payload 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.retail.v2alpha.CompleteQueryResponse.CompletionResult;

                        /**
                         * Verifies a CompletionResult message.
                         * @param message Plain 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 CompletionResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CompletionResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.CompleteQueryResponse.CompletionResult;

                        /**
                         * Creates a plain object from a CompletionResult message. Also converts values to other types if specified.
                         * @param message CompletionResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.CompleteQueryResponse.CompletionResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CompletionResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CompletionResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a RecentSearchResult. */
                    interface IRecentSearchResult {

                        /** RecentSearchResult recentSearch */
                        recentSearch?: (string|null);
                    }

                    /** Represents a RecentSearchResult. */
                    class RecentSearchResult implements IRecentSearchResult {

                        /**
                         * Constructs a new RecentSearchResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.CompleteQueryResponse.IRecentSearchResult);

                        /** RecentSearchResult recentSearch. */
                        public recentSearch: string;

                        /**
                         * Creates a new RecentSearchResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RecentSearchResult instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.CompleteQueryResponse.IRecentSearchResult): google.cloud.retail.v2alpha.CompleteQueryResponse.RecentSearchResult;

                        /**
                         * Encodes the specified RecentSearchResult message. Does not implicitly {@link google.cloud.retail.v2alpha.CompleteQueryResponse.RecentSearchResult.verify|verify} messages.
                         * @param message RecentSearchResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.CompleteQueryResponse.IRecentSearchResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RecentSearchResult message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.CompleteQueryResponse.RecentSearchResult.verify|verify} messages.
                         * @param message RecentSearchResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.CompleteQueryResponse.IRecentSearchResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RecentSearchResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RecentSearchResult
                         * @throws {Error} If the payload is not 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.retail.v2alpha.CompleteQueryResponse.RecentSearchResult;

                        /**
                         * Decodes a RecentSearchResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RecentSearchResult
                         * @throws {Error} If the payload 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.retail.v2alpha.CompleteQueryResponse.RecentSearchResult;

                        /**
                         * Verifies a RecentSearchResult message.
                         * @param message Plain 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 RecentSearchResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RecentSearchResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.CompleteQueryResponse.RecentSearchResult;

                        /**
                         * Creates a plain object from a RecentSearchResult message. Also converts values to other types if specified.
                         * @param message RecentSearchResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.CompleteQueryResponse.RecentSearchResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RecentSearchResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RecentSearchResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AttributeResult. */
                    interface IAttributeResult {

                        /** AttributeResult suggestions */
                        suggestions?: (string[]|null);
                    }

                    /** Represents an AttributeResult. */
                    class AttributeResult implements IAttributeResult {

                        /**
                         * Constructs a new AttributeResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.CompleteQueryResponse.IAttributeResult);

                        /** AttributeResult suggestions. */
                        public suggestions: string[];

                        /**
                         * Creates a new AttributeResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AttributeResult instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.CompleteQueryResponse.IAttributeResult): google.cloud.retail.v2alpha.CompleteQueryResponse.AttributeResult;

                        /**
                         * Encodes the specified AttributeResult message. Does not implicitly {@link google.cloud.retail.v2alpha.CompleteQueryResponse.AttributeResult.verify|verify} messages.
                         * @param message AttributeResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.CompleteQueryResponse.IAttributeResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AttributeResult message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.CompleteQueryResponse.AttributeResult.verify|verify} messages.
                         * @param message AttributeResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.CompleteQueryResponse.IAttributeResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AttributeResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AttributeResult
                         * @throws {Error} If the payload is not 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.retail.v2alpha.CompleteQueryResponse.AttributeResult;

                        /**
                         * Decodes an AttributeResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AttributeResult
                         * @throws {Error} If the payload 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.retail.v2alpha.CompleteQueryResponse.AttributeResult;

                        /**
                         * Verifies an AttributeResult message.
                         * @param message Plain 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 AttributeResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AttributeResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.CompleteQueryResponse.AttributeResult;

                        /**
                         * Creates a plain object from an AttributeResult message. Also converts values to other types if specified.
                         * @param message AttributeResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.CompleteQueryResponse.AttributeResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AttributeResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AttributeResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Represents a SearchService */
                class SearchService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new SearchService 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 SearchService 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): SearchService;

                    /**
                     * Calls Search.
                     * @param request SearchRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and SearchResponse
                     */
                    public search(request: google.cloud.retail.v2alpha.ISearchRequest, callback: google.cloud.retail.v2alpha.SearchService.SearchCallback): void;

                    /**
                     * Calls Search.
                     * @param request SearchRequest message or plain object
                     * @returns Promise
                     */
                    public search(request: google.cloud.retail.v2alpha.ISearchRequest): Promise<google.cloud.retail.v2alpha.SearchResponse>;
                }

                namespace SearchService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.SearchService|search}.
                     * @param error Error, if any
                     * @param [response] SearchResponse
                     */
                    type SearchCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.SearchResponse) => void;
                }

                /** Properties of a ProductAttributeValue. */
                interface IProductAttributeValue {

                    /** ProductAttributeValue name */
                    name?: (string|null);

                    /** ProductAttributeValue value */
                    value?: (string|null);
                }

                /** Represents a ProductAttributeValue. */
                class ProductAttributeValue implements IProductAttributeValue {

                    /**
                     * Constructs a new ProductAttributeValue.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IProductAttributeValue);

                    /** ProductAttributeValue name. */
                    public name: string;

                    /** ProductAttributeValue value. */
                    public value: string;

                    /**
                     * Creates a new ProductAttributeValue instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ProductAttributeValue instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IProductAttributeValue): google.cloud.retail.v2alpha.ProductAttributeValue;

                    /**
                     * Encodes the specified ProductAttributeValue message. Does not implicitly {@link google.cloud.retail.v2alpha.ProductAttributeValue.verify|verify} messages.
                     * @param message ProductAttributeValue message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IProductAttributeValue, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ProductAttributeValue message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ProductAttributeValue.verify|verify} messages.
                     * @param message ProductAttributeValue message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IProductAttributeValue, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ProductAttributeValue message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ProductAttributeValue
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ProductAttributeValue;

                    /**
                     * Decodes a ProductAttributeValue message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ProductAttributeValue
                     * @throws {Error} If the payload 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.retail.v2alpha.ProductAttributeValue;

                    /**
                     * Verifies a ProductAttributeValue message.
                     * @param message Plain 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 ProductAttributeValue message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ProductAttributeValue
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ProductAttributeValue;

                    /**
                     * Creates a plain object from a ProductAttributeValue message. Also converts values to other types if specified.
                     * @param message ProductAttributeValue
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ProductAttributeValue, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ProductAttributeValue to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ProductAttributeValue
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ProductAttributeInterval. */
                interface IProductAttributeInterval {

                    /** ProductAttributeInterval name */
                    name?: (string|null);

                    /** ProductAttributeInterval interval */
                    interval?: (google.cloud.retail.v2alpha.IInterval|null);
                }

                /** Represents a ProductAttributeInterval. */
                class ProductAttributeInterval implements IProductAttributeInterval {

                    /**
                     * Constructs a new ProductAttributeInterval.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IProductAttributeInterval);

                    /** ProductAttributeInterval name. */
                    public name: string;

                    /** ProductAttributeInterval interval. */
                    public interval?: (google.cloud.retail.v2alpha.IInterval|null);

                    /**
                     * Creates a new ProductAttributeInterval instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ProductAttributeInterval instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IProductAttributeInterval): google.cloud.retail.v2alpha.ProductAttributeInterval;

                    /**
                     * Encodes the specified ProductAttributeInterval message. Does not implicitly {@link google.cloud.retail.v2alpha.ProductAttributeInterval.verify|verify} messages.
                     * @param message ProductAttributeInterval message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IProductAttributeInterval, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ProductAttributeInterval message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ProductAttributeInterval.verify|verify} messages.
                     * @param message ProductAttributeInterval message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IProductAttributeInterval, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ProductAttributeInterval message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ProductAttributeInterval
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ProductAttributeInterval;

                    /**
                     * Decodes a ProductAttributeInterval message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ProductAttributeInterval
                     * @throws {Error} If the payload 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.retail.v2alpha.ProductAttributeInterval;

                    /**
                     * Verifies a ProductAttributeInterval message.
                     * @param message Plain 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 ProductAttributeInterval message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ProductAttributeInterval
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ProductAttributeInterval;

                    /**
                     * Creates a plain object from a ProductAttributeInterval message. Also converts values to other types if specified.
                     * @param message ProductAttributeInterval
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ProductAttributeInterval, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ProductAttributeInterval to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ProductAttributeInterval
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a Tile. */
                interface ITile {

                    /** Tile productAttributeValue */
                    productAttributeValue?: (google.cloud.retail.v2alpha.IProductAttributeValue|null);

                    /** Tile productAttributeInterval */
                    productAttributeInterval?: (google.cloud.retail.v2alpha.IProductAttributeInterval|null);

                    /** Tile representativeProductId */
                    representativeProductId?: (string|null);
                }

                /** Represents a Tile. */
                class Tile implements ITile {

                    /**
                     * Constructs a new Tile.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.ITile);

                    /** Tile productAttributeValue. */
                    public productAttributeValue?: (google.cloud.retail.v2alpha.IProductAttributeValue|null);

                    /** Tile productAttributeInterval. */
                    public productAttributeInterval?: (google.cloud.retail.v2alpha.IProductAttributeInterval|null);

                    /** Tile representativeProductId. */
                    public representativeProductId: string;

                    /** Tile productAttribute. */
                    public productAttribute?: ("productAttributeValue"|"productAttributeInterval");

                    /**
                     * Creates a new Tile instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Tile instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.ITile): google.cloud.retail.v2alpha.Tile;

                    /**
                     * Encodes the specified Tile message. Does not implicitly {@link google.cloud.retail.v2alpha.Tile.verify|verify} messages.
                     * @param message Tile message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.ITile, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Tile message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.Tile.verify|verify} messages.
                     * @param message Tile message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.ITile, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Tile message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Tile
                     * @throws {Error} If the payload is not 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.retail.v2alpha.Tile;

                    /**
                     * Decodes a Tile message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Tile
                     * @throws {Error} If the payload 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.retail.v2alpha.Tile;

                    /**
                     * Verifies a Tile message.
                     * @param message Plain 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 Tile message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Tile
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.Tile;

                    /**
                     * Creates a plain object from a Tile message. Also converts values to other types if specified.
                     * @param message Tile
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.Tile, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Tile to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Tile
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SearchRequest. */
                interface ISearchRequest {

                    /** SearchRequest placement */
                    placement?: (string|null);

                    /** SearchRequest branch */
                    branch?: (string|null);

                    /** SearchRequest query */
                    query?: (string|null);

                    /** SearchRequest visitorId */
                    visitorId?: (string|null);

                    /** SearchRequest userInfo */
                    userInfo?: (google.cloud.retail.v2alpha.IUserInfo|null);

                    /** SearchRequest pageSize */
                    pageSize?: (number|null);

                    /** SearchRequest pageToken */
                    pageToken?: (string|null);

                    /** SearchRequest offset */
                    offset?: (number|null);

                    /** SearchRequest filter */
                    filter?: (string|null);

                    /** SearchRequest canonicalFilter */
                    canonicalFilter?: (string|null);

                    /** SearchRequest orderBy */
                    orderBy?: (string|null);

                    /** SearchRequest facetSpecs */
                    facetSpecs?: (google.cloud.retail.v2alpha.SearchRequest.IFacetSpec[]|null);

                    /** SearchRequest dynamicFacetSpec */
                    dynamicFacetSpec?: (google.cloud.retail.v2alpha.SearchRequest.IDynamicFacetSpec|null);

                    /** SearchRequest boostSpec */
                    boostSpec?: (google.cloud.retail.v2alpha.SearchRequest.IBoostSpec|null);

                    /** SearchRequest queryExpansionSpec */
                    queryExpansionSpec?: (google.cloud.retail.v2alpha.SearchRequest.IQueryExpansionSpec|null);

                    /** SearchRequest relevanceThreshold */
                    relevanceThreshold?: (google.cloud.retail.v2alpha.SearchRequest.RelevanceThreshold|keyof typeof google.cloud.retail.v2alpha.SearchRequest.RelevanceThreshold|null);

                    /** SearchRequest variantRollupKeys */
                    variantRollupKeys?: (string[]|null);

                    /** SearchRequest experimentId */
                    experimentId?: (string|null);

                    /** SearchRequest pageCategories */
                    pageCategories?: (string[]|null);

                    /** SearchRequest searchMode */
                    searchMode?: (google.cloud.retail.v2alpha.SearchRequest.SearchMode|keyof typeof google.cloud.retail.v2alpha.SearchRequest.SearchMode|null);

                    /** SearchRequest personalizationSpec */
                    personalizationSpec?: (google.cloud.retail.v2alpha.SearchRequest.IPersonalizationSpec|null);

                    /** SearchRequest labels */
                    labels?: ({ [k: string]: string }|null);

                    /** SearchRequest spellCorrectionSpec */
                    spellCorrectionSpec?: (google.cloud.retail.v2alpha.SearchRequest.ISpellCorrectionSpec|null);

                    /** SearchRequest entity */
                    entity?: (string|null);

                    /** SearchRequest conversationalSearchSpec */
                    conversationalSearchSpec?: (google.cloud.retail.v2alpha.SearchRequest.IConversationalSearchSpec|null);

                    /** SearchRequest tileNavigationSpec */
                    tileNavigationSpec?: (google.cloud.retail.v2alpha.SearchRequest.ITileNavigationSpec|null);

                    /** SearchRequest languageCode */
                    languageCode?: (string|null);

                    /** SearchRequest regionCode */
                    regionCode?: (string|null);

                    /** SearchRequest placeId */
                    placeId?: (string|null);

                    /** SearchRequest userAttributes */
                    userAttributes?: ({ [k: string]: google.cloud.retail.v2alpha.IStringList }|null);
                }

                /** Represents a SearchRequest. */
                class SearchRequest implements ISearchRequest {

                    /**
                     * Constructs a new SearchRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.ISearchRequest);

                    /** SearchRequest placement. */
                    public placement: string;

                    /** SearchRequest branch. */
                    public branch: string;

                    /** SearchRequest query. */
                    public query: string;

                    /** SearchRequest visitorId. */
                    public visitorId: string;

                    /** SearchRequest userInfo. */
                    public userInfo?: (google.cloud.retail.v2alpha.IUserInfo|null);

                    /** SearchRequest pageSize. */
                    public pageSize: number;

                    /** SearchRequest pageToken. */
                    public pageToken: string;

                    /** SearchRequest offset. */
                    public offset: number;

                    /** SearchRequest filter. */
                    public filter: string;

                    /** SearchRequest canonicalFilter. */
                    public canonicalFilter: string;

                    /** SearchRequest orderBy. */
                    public orderBy: string;

                    /** SearchRequest facetSpecs. */
                    public facetSpecs: google.cloud.retail.v2alpha.SearchRequest.IFacetSpec[];

                    /** SearchRequest dynamicFacetSpec. */
                    public dynamicFacetSpec?: (google.cloud.retail.v2alpha.SearchRequest.IDynamicFacetSpec|null);

                    /** SearchRequest boostSpec. */
                    public boostSpec?: (google.cloud.retail.v2alpha.SearchRequest.IBoostSpec|null);

                    /** SearchRequest queryExpansionSpec. */
                    public queryExpansionSpec?: (google.cloud.retail.v2alpha.SearchRequest.IQueryExpansionSpec|null);

                    /** SearchRequest relevanceThreshold. */
                    public relevanceThreshold: (google.cloud.retail.v2alpha.SearchRequest.RelevanceThreshold|keyof typeof google.cloud.retail.v2alpha.SearchRequest.RelevanceThreshold);

                    /** SearchRequest variantRollupKeys. */
                    public variantRollupKeys: string[];

                    /** SearchRequest experimentId. */
                    public experimentId: string;

                    /** SearchRequest pageCategories. */
                    public pageCategories: string[];

                    /** SearchRequest searchMode. */
                    public searchMode: (google.cloud.retail.v2alpha.SearchRequest.SearchMode|keyof typeof google.cloud.retail.v2alpha.SearchRequest.SearchMode);

                    /** SearchRequest personalizationSpec. */
                    public personalizationSpec?: (google.cloud.retail.v2alpha.SearchRequest.IPersonalizationSpec|null);

                    /** SearchRequest labels. */
                    public labels: { [k: string]: string };

                    /** SearchRequest spellCorrectionSpec. */
                    public spellCorrectionSpec?: (google.cloud.retail.v2alpha.SearchRequest.ISpellCorrectionSpec|null);

                    /** SearchRequest entity. */
                    public entity: string;

                    /** SearchRequest conversationalSearchSpec. */
                    public conversationalSearchSpec?: (google.cloud.retail.v2alpha.SearchRequest.IConversationalSearchSpec|null);

                    /** SearchRequest tileNavigationSpec. */
                    public tileNavigationSpec?: (google.cloud.retail.v2alpha.SearchRequest.ITileNavigationSpec|null);

                    /** SearchRequest languageCode. */
                    public languageCode: string;

                    /** SearchRequest regionCode. */
                    public regionCode: string;

                    /** SearchRequest placeId. */
                    public placeId: string;

                    /** SearchRequest userAttributes. */
                    public userAttributes: { [k: string]: google.cloud.retail.v2alpha.IStringList };

                    /**
                     * Creates a new SearchRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SearchRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.ISearchRequest): google.cloud.retail.v2alpha.SearchRequest;

                    /**
                     * Encodes the specified SearchRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.SearchRequest.verify|verify} messages.
                     * @param message SearchRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.ISearchRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SearchRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.SearchRequest.verify|verify} messages.
                     * @param message SearchRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.ISearchRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SearchRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SearchRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.SearchRequest;

                    /**
                     * Decodes a SearchRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SearchRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.SearchRequest;

                    /**
                     * Verifies a SearchRequest message.
                     * @param message Plain 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 SearchRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SearchRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.SearchRequest;

                    /**
                     * Creates a plain object from a SearchRequest message. Also converts values to other types if specified.
                     * @param message SearchRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.SearchRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SearchRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SearchRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace SearchRequest {

                    /** Properties of a FacetSpec. */
                    interface IFacetSpec {

                        /** FacetSpec facetKey */
                        facetKey?: (google.cloud.retail.v2alpha.SearchRequest.FacetSpec.IFacetKey|null);

                        /** FacetSpec limit */
                        limit?: (number|null);

                        /** FacetSpec excludedFilterKeys */
                        excludedFilterKeys?: (string[]|null);

                        /** FacetSpec enableDynamicPosition */
                        enableDynamicPosition?: (boolean|null);
                    }

                    /** Represents a FacetSpec. */
                    class FacetSpec implements IFacetSpec {

                        /**
                         * Constructs a new FacetSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.SearchRequest.IFacetSpec);

                        /** FacetSpec facetKey. */
                        public facetKey?: (google.cloud.retail.v2alpha.SearchRequest.FacetSpec.IFacetKey|null);

                        /** FacetSpec limit. */
                        public limit: number;

                        /** FacetSpec excludedFilterKeys. */
                        public excludedFilterKeys: string[];

                        /** FacetSpec enableDynamicPosition. */
                        public enableDynamicPosition: boolean;

                        /**
                         * Creates a new FacetSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FacetSpec instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.SearchRequest.IFacetSpec): google.cloud.retail.v2alpha.SearchRequest.FacetSpec;

                        /**
                         * Encodes the specified FacetSpec message. Does not implicitly {@link google.cloud.retail.v2alpha.SearchRequest.FacetSpec.verify|verify} messages.
                         * @param message FacetSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.SearchRequest.IFacetSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FacetSpec message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.SearchRequest.FacetSpec.verify|verify} messages.
                         * @param message FacetSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.SearchRequest.IFacetSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FacetSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FacetSpec
                         * @throws {Error} If the payload is not 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.retail.v2alpha.SearchRequest.FacetSpec;

                        /**
                         * Decodes a FacetSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FacetSpec
                         * @throws {Error} If the payload 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.retail.v2alpha.SearchRequest.FacetSpec;

                        /**
                         * Verifies a FacetSpec message.
                         * @param message Plain 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 FacetSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FacetSpec
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.SearchRequest.FacetSpec;

                        /**
                         * Creates a plain object from a FacetSpec message. Also converts values to other types if specified.
                         * @param message FacetSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.SearchRequest.FacetSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FacetSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FacetSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace FacetSpec {

                        /** Properties of a FacetKey. */
                        interface IFacetKey {

                            /** FacetKey key */
                            key?: (string|null);

                            /** FacetKey intervals */
                            intervals?: (google.cloud.retail.v2alpha.IInterval[]|null);

                            /** FacetKey restrictedValues */
                            restrictedValues?: (string[]|null);

                            /** FacetKey prefixes */
                            prefixes?: (string[]|null);

                            /** FacetKey contains */
                            contains?: (string[]|null);

                            /** FacetKey caseInsensitive */
                            caseInsensitive?: (boolean|null);

                            /** FacetKey orderBy */
                            orderBy?: (string|null);

                            /** FacetKey query */
                            query?: (string|null);

                            /** FacetKey returnMinMax */
                            returnMinMax?: (boolean|null);
                        }

                        /** Represents a FacetKey. */
                        class FacetKey implements IFacetKey {

                            /**
                             * Constructs a new FacetKey.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2alpha.SearchRequest.FacetSpec.IFacetKey);

                            /** FacetKey key. */
                            public key: string;

                            /** FacetKey intervals. */
                            public intervals: google.cloud.retail.v2alpha.IInterval[];

                            /** FacetKey restrictedValues. */
                            public restrictedValues: string[];

                            /** FacetKey prefixes. */
                            public prefixes: string[];

                            /** FacetKey contains. */
                            public contains: string[];

                            /** FacetKey caseInsensitive. */
                            public caseInsensitive: boolean;

                            /** FacetKey orderBy. */
                            public orderBy: string;

                            /** FacetKey query. */
                            public query: string;

                            /** FacetKey returnMinMax. */
                            public returnMinMax: boolean;

                            /**
                             * Creates a new FacetKey instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns FacetKey instance
                             */
                            public static create(properties?: google.cloud.retail.v2alpha.SearchRequest.FacetSpec.IFacetKey): google.cloud.retail.v2alpha.SearchRequest.FacetSpec.FacetKey;

                            /**
                             * Encodes the specified FacetKey message. Does not implicitly {@link google.cloud.retail.v2alpha.SearchRequest.FacetSpec.FacetKey.verify|verify} messages.
                             * @param message FacetKey message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.retail.v2alpha.SearchRequest.FacetSpec.IFacetKey, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified FacetKey message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.SearchRequest.FacetSpec.FacetKey.verify|verify} messages.
                             * @param message FacetKey message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.retail.v2alpha.SearchRequest.FacetSpec.IFacetKey, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a FacetKey message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns FacetKey
                             * @throws {Error} If the payload is not 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.retail.v2alpha.SearchRequest.FacetSpec.FacetKey;

                            /**
                             * Decodes a FacetKey message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns FacetKey
                             * @throws {Error} If the payload 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.retail.v2alpha.SearchRequest.FacetSpec.FacetKey;

                            /**
                             * Verifies a FacetKey message.
                             * @param message Plain 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 FacetKey message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns FacetKey
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.SearchRequest.FacetSpec.FacetKey;

                            /**
                             * Creates a plain object from a FacetKey message. Also converts values to other types if specified.
                             * @param message FacetKey
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.retail.v2alpha.SearchRequest.FacetSpec.FacetKey, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this FacetKey to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for FacetKey
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a DynamicFacetSpec. */
                    interface IDynamicFacetSpec {

                        /** DynamicFacetSpec mode */
                        mode?: (google.cloud.retail.v2alpha.SearchRequest.DynamicFacetSpec.Mode|keyof typeof google.cloud.retail.v2alpha.SearchRequest.DynamicFacetSpec.Mode|null);
                    }

                    /** Represents a DynamicFacetSpec. */
                    class DynamicFacetSpec implements IDynamicFacetSpec {

                        /**
                         * Constructs a new DynamicFacetSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.SearchRequest.IDynamicFacetSpec);

                        /** DynamicFacetSpec mode. */
                        public mode: (google.cloud.retail.v2alpha.SearchRequest.DynamicFacetSpec.Mode|keyof typeof google.cloud.retail.v2alpha.SearchRequest.DynamicFacetSpec.Mode);

                        /**
                         * Creates a new DynamicFacetSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DynamicFacetSpec instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.SearchRequest.IDynamicFacetSpec): google.cloud.retail.v2alpha.SearchRequest.DynamicFacetSpec;

                        /**
                         * Encodes the specified DynamicFacetSpec message. Does not implicitly {@link google.cloud.retail.v2alpha.SearchRequest.DynamicFacetSpec.verify|verify} messages.
                         * @param message DynamicFacetSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.SearchRequest.IDynamicFacetSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DynamicFacetSpec message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.SearchRequest.DynamicFacetSpec.verify|verify} messages.
                         * @param message DynamicFacetSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.SearchRequest.IDynamicFacetSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DynamicFacetSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DynamicFacetSpec
                         * @throws {Error} If the payload is not 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.retail.v2alpha.SearchRequest.DynamicFacetSpec;

                        /**
                         * Decodes a DynamicFacetSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DynamicFacetSpec
                         * @throws {Error} If the payload 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.retail.v2alpha.SearchRequest.DynamicFacetSpec;

                        /**
                         * Verifies a DynamicFacetSpec message.
                         * @param message Plain 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 DynamicFacetSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DynamicFacetSpec
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.SearchRequest.DynamicFacetSpec;

                        /**
                         * Creates a plain object from a DynamicFacetSpec message. Also converts values to other types if specified.
                         * @param message DynamicFacetSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.SearchRequest.DynamicFacetSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DynamicFacetSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DynamicFacetSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace DynamicFacetSpec {

                        /** Mode enum. */
                        enum Mode {
                            MODE_UNSPECIFIED = 0,
                            DISABLED = 1,
                            ENABLED = 2
                        }
                    }

                    /** Properties of a BoostSpec. */
                    interface IBoostSpec {

                        /** BoostSpec conditionBoostSpecs */
                        conditionBoostSpecs?: (google.cloud.retail.v2alpha.SearchRequest.BoostSpec.IConditionBoostSpec[]|null);

                        /** BoostSpec skipBoostSpecValidation */
                        skipBoostSpecValidation?: (boolean|null);
                    }

                    /** Represents a BoostSpec. */
                    class BoostSpec implements IBoostSpec {

                        /**
                         * Constructs a new BoostSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.SearchRequest.IBoostSpec);

                        /** BoostSpec conditionBoostSpecs. */
                        public conditionBoostSpecs: google.cloud.retail.v2alpha.SearchRequest.BoostSpec.IConditionBoostSpec[];

                        /** BoostSpec skipBoostSpecValidation. */
                        public skipBoostSpecValidation?: (boolean|null);

                        /**
                         * Creates a new BoostSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BoostSpec instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.SearchRequest.IBoostSpec): google.cloud.retail.v2alpha.SearchRequest.BoostSpec;

                        /**
                         * Encodes the specified BoostSpec message. Does not implicitly {@link google.cloud.retail.v2alpha.SearchRequest.BoostSpec.verify|verify} messages.
                         * @param message BoostSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.SearchRequest.IBoostSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BoostSpec message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.SearchRequest.BoostSpec.verify|verify} messages.
                         * @param message BoostSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.SearchRequest.IBoostSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BoostSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BoostSpec
                         * @throws {Error} If the payload is not 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.retail.v2alpha.SearchRequest.BoostSpec;

                        /**
                         * Decodes a BoostSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BoostSpec
                         * @throws {Error} If the payload 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.retail.v2alpha.SearchRequest.BoostSpec;

                        /**
                         * Verifies a BoostSpec message.
                         * @param message Plain 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 BoostSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BoostSpec
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.SearchRequest.BoostSpec;

                        /**
                         * Creates a plain object from a BoostSpec message. Also converts values to other types if specified.
                         * @param message BoostSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.SearchRequest.BoostSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BoostSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BoostSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace BoostSpec {

                        /** Properties of a ConditionBoostSpec. */
                        interface IConditionBoostSpec {

                            /** ConditionBoostSpec condition */
                            condition?: (string|null);

                            /** ConditionBoostSpec boost */
                            boost?: (number|null);
                        }

                        /** Represents a ConditionBoostSpec. */
                        class ConditionBoostSpec implements IConditionBoostSpec {

                            /**
                             * Constructs a new ConditionBoostSpec.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2alpha.SearchRequest.BoostSpec.IConditionBoostSpec);

                            /** ConditionBoostSpec condition. */
                            public condition: string;

                            /** ConditionBoostSpec boost. */
                            public boost: number;

                            /**
                             * Creates a new ConditionBoostSpec instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ConditionBoostSpec instance
                             */
                            public static create(properties?: google.cloud.retail.v2alpha.SearchRequest.BoostSpec.IConditionBoostSpec): google.cloud.retail.v2alpha.SearchRequest.BoostSpec.ConditionBoostSpec;

                            /**
                             * Encodes the specified ConditionBoostSpec message. Does not implicitly {@link google.cloud.retail.v2alpha.SearchRequest.BoostSpec.ConditionBoostSpec.verify|verify} messages.
                             * @param message ConditionBoostSpec message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.retail.v2alpha.SearchRequest.BoostSpec.IConditionBoostSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ConditionBoostSpec message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.SearchRequest.BoostSpec.ConditionBoostSpec.verify|verify} messages.
                             * @param message ConditionBoostSpec message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.retail.v2alpha.SearchRequest.BoostSpec.IConditionBoostSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ConditionBoostSpec message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ConditionBoostSpec
                             * @throws {Error} If the payload is not 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.retail.v2alpha.SearchRequest.BoostSpec.ConditionBoostSpec;

                            /**
                             * Decodes a ConditionBoostSpec message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ConditionBoostSpec
                             * @throws {Error} If the payload 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.retail.v2alpha.SearchRequest.BoostSpec.ConditionBoostSpec;

                            /**
                             * Verifies a ConditionBoostSpec message.
                             * @param message Plain 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 ConditionBoostSpec message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ConditionBoostSpec
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.SearchRequest.BoostSpec.ConditionBoostSpec;

                            /**
                             * Creates a plain object from a ConditionBoostSpec message. Also converts values to other types if specified.
                             * @param message ConditionBoostSpec
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.retail.v2alpha.SearchRequest.BoostSpec.ConditionBoostSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ConditionBoostSpec to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ConditionBoostSpec
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a QueryExpansionSpec. */
                    interface IQueryExpansionSpec {

                        /** QueryExpansionSpec condition */
                        condition?: (google.cloud.retail.v2alpha.SearchRequest.QueryExpansionSpec.Condition|keyof typeof google.cloud.retail.v2alpha.SearchRequest.QueryExpansionSpec.Condition|null);

                        /** QueryExpansionSpec pinUnexpandedResults */
                        pinUnexpandedResults?: (boolean|null);
                    }

                    /** Represents a QueryExpansionSpec. */
                    class QueryExpansionSpec implements IQueryExpansionSpec {

                        /**
                         * Constructs a new QueryExpansionSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.SearchRequest.IQueryExpansionSpec);

                        /** QueryExpansionSpec condition. */
                        public condition: (google.cloud.retail.v2alpha.SearchRequest.QueryExpansionSpec.Condition|keyof typeof google.cloud.retail.v2alpha.SearchRequest.QueryExpansionSpec.Condition);

                        /** QueryExpansionSpec pinUnexpandedResults. */
                        public pinUnexpandedResults: boolean;

                        /**
                         * Creates a new QueryExpansionSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns QueryExpansionSpec instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.SearchRequest.IQueryExpansionSpec): google.cloud.retail.v2alpha.SearchRequest.QueryExpansionSpec;

                        /**
                         * Encodes the specified QueryExpansionSpec message. Does not implicitly {@link google.cloud.retail.v2alpha.SearchRequest.QueryExpansionSpec.verify|verify} messages.
                         * @param message QueryExpansionSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.SearchRequest.IQueryExpansionSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified QueryExpansionSpec message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.SearchRequest.QueryExpansionSpec.verify|verify} messages.
                         * @param message QueryExpansionSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.SearchRequest.IQueryExpansionSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a QueryExpansionSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns QueryExpansionSpec
                         * @throws {Error} If the payload is not 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.retail.v2alpha.SearchRequest.QueryExpansionSpec;

                        /**
                         * Decodes a QueryExpansionSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns QueryExpansionSpec
                         * @throws {Error} If the payload 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.retail.v2alpha.SearchRequest.QueryExpansionSpec;

                        /**
                         * Verifies a QueryExpansionSpec message.
                         * @param message Plain 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 QueryExpansionSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns QueryExpansionSpec
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.SearchRequest.QueryExpansionSpec;

                        /**
                         * Creates a plain object from a QueryExpansionSpec message. Also converts values to other types if specified.
                         * @param message QueryExpansionSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.SearchRequest.QueryExpansionSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this QueryExpansionSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for QueryExpansionSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace QueryExpansionSpec {

                        /** Condition enum. */
                        enum Condition {
                            CONDITION_UNSPECIFIED = 0,
                            DISABLED = 1,
                            AUTO = 3
                        }
                    }

                    /** Properties of a PersonalizationSpec. */
                    interface IPersonalizationSpec {

                        /** PersonalizationSpec mode */
                        mode?: (google.cloud.retail.v2alpha.SearchRequest.PersonalizationSpec.Mode|keyof typeof google.cloud.retail.v2alpha.SearchRequest.PersonalizationSpec.Mode|null);
                    }

                    /** Represents a PersonalizationSpec. */
                    class PersonalizationSpec implements IPersonalizationSpec {

                        /**
                         * Constructs a new PersonalizationSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.SearchRequest.IPersonalizationSpec);

                        /** PersonalizationSpec mode. */
                        public mode: (google.cloud.retail.v2alpha.SearchRequest.PersonalizationSpec.Mode|keyof typeof google.cloud.retail.v2alpha.SearchRequest.PersonalizationSpec.Mode);

                        /**
                         * Creates a new PersonalizationSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PersonalizationSpec instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.SearchRequest.IPersonalizationSpec): google.cloud.retail.v2alpha.SearchRequest.PersonalizationSpec;

                        /**
                         * Encodes the specified PersonalizationSpec message. Does not implicitly {@link google.cloud.retail.v2alpha.SearchRequest.PersonalizationSpec.verify|verify} messages.
                         * @param message PersonalizationSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.SearchRequest.IPersonalizationSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PersonalizationSpec message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.SearchRequest.PersonalizationSpec.verify|verify} messages.
                         * @param message PersonalizationSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.SearchRequest.IPersonalizationSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PersonalizationSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PersonalizationSpec
                         * @throws {Error} If the payload is not 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.retail.v2alpha.SearchRequest.PersonalizationSpec;

                        /**
                         * Decodes a PersonalizationSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PersonalizationSpec
                         * @throws {Error} If the payload 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.retail.v2alpha.SearchRequest.PersonalizationSpec;

                        /**
                         * Verifies a PersonalizationSpec message.
                         * @param message Plain 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 PersonalizationSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PersonalizationSpec
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.SearchRequest.PersonalizationSpec;

                        /**
                         * Creates a plain object from a PersonalizationSpec message. Also converts values to other types if specified.
                         * @param message PersonalizationSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.SearchRequest.PersonalizationSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PersonalizationSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PersonalizationSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace PersonalizationSpec {

                        /** Mode enum. */
                        enum Mode {
                            MODE_UNSPECIFIED = 0,
                            AUTO = 1,
                            DISABLED = 2
                        }
                    }

                    /** Properties of a SpellCorrectionSpec. */
                    interface ISpellCorrectionSpec {

                        /** SpellCorrectionSpec mode */
                        mode?: (google.cloud.retail.v2alpha.SearchRequest.SpellCorrectionSpec.Mode|keyof typeof google.cloud.retail.v2alpha.SearchRequest.SpellCorrectionSpec.Mode|null);
                    }

                    /** Represents a SpellCorrectionSpec. */
                    class SpellCorrectionSpec implements ISpellCorrectionSpec {

                        /**
                         * Constructs a new SpellCorrectionSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.SearchRequest.ISpellCorrectionSpec);

                        /** SpellCorrectionSpec mode. */
                        public mode: (google.cloud.retail.v2alpha.SearchRequest.SpellCorrectionSpec.Mode|keyof typeof google.cloud.retail.v2alpha.SearchRequest.SpellCorrectionSpec.Mode);

                        /**
                         * Creates a new SpellCorrectionSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SpellCorrectionSpec instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.SearchRequest.ISpellCorrectionSpec): google.cloud.retail.v2alpha.SearchRequest.SpellCorrectionSpec;

                        /**
                         * Encodes the specified SpellCorrectionSpec message. Does not implicitly {@link google.cloud.retail.v2alpha.SearchRequest.SpellCorrectionSpec.verify|verify} messages.
                         * @param message SpellCorrectionSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.SearchRequest.ISpellCorrectionSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SpellCorrectionSpec message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.SearchRequest.SpellCorrectionSpec.verify|verify} messages.
                         * @param message SpellCorrectionSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.SearchRequest.ISpellCorrectionSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SpellCorrectionSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SpellCorrectionSpec
                         * @throws {Error} If the payload is not 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.retail.v2alpha.SearchRequest.SpellCorrectionSpec;

                        /**
                         * Decodes a SpellCorrectionSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SpellCorrectionSpec
                         * @throws {Error} If the payload 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.retail.v2alpha.SearchRequest.SpellCorrectionSpec;

                        /**
                         * Verifies a SpellCorrectionSpec message.
                         * @param message Plain 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 SpellCorrectionSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SpellCorrectionSpec
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.SearchRequest.SpellCorrectionSpec;

                        /**
                         * Creates a plain object from a SpellCorrectionSpec message. Also converts values to other types if specified.
                         * @param message SpellCorrectionSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.SearchRequest.SpellCorrectionSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SpellCorrectionSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SpellCorrectionSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace SpellCorrectionSpec {

                        /** Mode enum. */
                        enum Mode {
                            MODE_UNSPECIFIED = 0,
                            SUGGESTION_ONLY = 1,
                            AUTO = 2
                        }
                    }

                    /** Properties of a ConversationalSearchSpec. */
                    interface IConversationalSearchSpec {

                        /** ConversationalSearchSpec followupConversationRequested */
                        followupConversationRequested?: (boolean|null);

                        /** ConversationalSearchSpec conversationId */
                        conversationId?: (string|null);

                        /** ConversationalSearchSpec userAnswer */
                        userAnswer?: (google.cloud.retail.v2alpha.SearchRequest.ConversationalSearchSpec.IUserAnswer|null);
                    }

                    /** Represents a ConversationalSearchSpec. */
                    class ConversationalSearchSpec implements IConversationalSearchSpec {

                        /**
                         * Constructs a new ConversationalSearchSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.SearchRequest.IConversationalSearchSpec);

                        /** ConversationalSearchSpec followupConversationRequested. */
                        public followupConversationRequested: boolean;

                        /** ConversationalSearchSpec conversationId. */
                        public conversationId: string;

                        /** ConversationalSearchSpec userAnswer. */
                        public userAnswer?: (google.cloud.retail.v2alpha.SearchRequest.ConversationalSearchSpec.IUserAnswer|null);

                        /**
                         * Creates a new ConversationalSearchSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversationalSearchSpec instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.SearchRequest.IConversationalSearchSpec): google.cloud.retail.v2alpha.SearchRequest.ConversationalSearchSpec;

                        /**
                         * Encodes the specified ConversationalSearchSpec message. Does not implicitly {@link google.cloud.retail.v2alpha.SearchRequest.ConversationalSearchSpec.verify|verify} messages.
                         * @param message ConversationalSearchSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.SearchRequest.IConversationalSearchSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversationalSearchSpec message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.SearchRequest.ConversationalSearchSpec.verify|verify} messages.
                         * @param message ConversationalSearchSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.SearchRequest.IConversationalSearchSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversationalSearchSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversationalSearchSpec
                         * @throws {Error} If the payload is not 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.retail.v2alpha.SearchRequest.ConversationalSearchSpec;

                        /**
                         * Decodes a ConversationalSearchSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversationalSearchSpec
                         * @throws {Error} If the payload 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.retail.v2alpha.SearchRequest.ConversationalSearchSpec;

                        /**
                         * Verifies a ConversationalSearchSpec message.
                         * @param message Plain 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 ConversationalSearchSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversationalSearchSpec
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.SearchRequest.ConversationalSearchSpec;

                        /**
                         * Creates a plain object from a ConversationalSearchSpec message. Also converts values to other types if specified.
                         * @param message ConversationalSearchSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.SearchRequest.ConversationalSearchSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversationalSearchSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversationalSearchSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ConversationalSearchSpec {

                        /** Properties of a UserAnswer. */
                        interface IUserAnswer {

                            /** UserAnswer textAnswer */
                            textAnswer?: (string|null);

                            /** UserAnswer selectedAnswer */
                            selectedAnswer?: (google.cloud.retail.v2alpha.SearchRequest.ConversationalSearchSpec.UserAnswer.ISelectedAnswer|null);
                        }

                        /** Represents a UserAnswer. */
                        class UserAnswer implements IUserAnswer {

                            /**
                             * Constructs a new UserAnswer.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2alpha.SearchRequest.ConversationalSearchSpec.IUserAnswer);

                            /** UserAnswer textAnswer. */
                            public textAnswer?: (string|null);

                            /** UserAnswer selectedAnswer. */
                            public selectedAnswer?: (google.cloud.retail.v2alpha.SearchRequest.ConversationalSearchSpec.UserAnswer.ISelectedAnswer|null);

                            /** UserAnswer type. */
                            public type?: ("textAnswer"|"selectedAnswer");

                            /**
                             * Creates a new UserAnswer instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns UserAnswer instance
                             */
                            public static create(properties?: google.cloud.retail.v2alpha.SearchRequest.ConversationalSearchSpec.IUserAnswer): google.cloud.retail.v2alpha.SearchRequest.ConversationalSearchSpec.UserAnswer;

                            /**
                             * Encodes the specified UserAnswer message. Does not implicitly {@link google.cloud.retail.v2alpha.SearchRequest.ConversationalSearchSpec.UserAnswer.verify|verify} messages.
                             * @param message UserAnswer message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.retail.v2alpha.SearchRequest.ConversationalSearchSpec.IUserAnswer, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified UserAnswer message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.SearchRequest.ConversationalSearchSpec.UserAnswer.verify|verify} messages.
                             * @param message UserAnswer message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.retail.v2alpha.SearchRequest.ConversationalSearchSpec.IUserAnswer, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a UserAnswer message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns UserAnswer
                             * @throws {Error} If the payload is not 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.retail.v2alpha.SearchRequest.ConversationalSearchSpec.UserAnswer;

                            /**
                             * Decodes a UserAnswer message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns UserAnswer
                             * @throws {Error} If the payload 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.retail.v2alpha.SearchRequest.ConversationalSearchSpec.UserAnswer;

                            /**
                             * Verifies a UserAnswer message.
                             * @param message Plain 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 UserAnswer message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns UserAnswer
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.SearchRequest.ConversationalSearchSpec.UserAnswer;

                            /**
                             * Creates a plain object from a UserAnswer message. Also converts values to other types if specified.
                             * @param message UserAnswer
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.retail.v2alpha.SearchRequest.ConversationalSearchSpec.UserAnswer, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this UserAnswer to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for UserAnswer
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        namespace UserAnswer {

                            /** Properties of a SelectedAnswer. */
                            interface ISelectedAnswer {

                                /** SelectedAnswer productAttributeValues */
                                productAttributeValues?: (google.cloud.retail.v2alpha.IProductAttributeValue[]|null);

                                /** SelectedAnswer productAttributeValue */
                                productAttributeValue?: (google.cloud.retail.v2alpha.IProductAttributeValue|null);
                            }

                            /** Represents a SelectedAnswer. */
                            class SelectedAnswer implements ISelectedAnswer {

                                /**
                                 * Constructs a new SelectedAnswer.
                                 * @param [properties] Properties to set
                                 */
                                constructor(properties?: google.cloud.retail.v2alpha.SearchRequest.ConversationalSearchSpec.UserAnswer.ISelectedAnswer);

                                /** SelectedAnswer productAttributeValues. */
                                public productAttributeValues: google.cloud.retail.v2alpha.IProductAttributeValue[];

                                /** SelectedAnswer productAttributeValue. */
                                public productAttributeValue?: (google.cloud.retail.v2alpha.IProductAttributeValue|null);

                                /**
                                 * Creates a new SelectedAnswer instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns SelectedAnswer instance
                                 */
                                public static create(properties?: google.cloud.retail.v2alpha.SearchRequest.ConversationalSearchSpec.UserAnswer.ISelectedAnswer): google.cloud.retail.v2alpha.SearchRequest.ConversationalSearchSpec.UserAnswer.SelectedAnswer;

                                /**
                                 * Encodes the specified SelectedAnswer message. Does not implicitly {@link google.cloud.retail.v2alpha.SearchRequest.ConversationalSearchSpec.UserAnswer.SelectedAnswer.verify|verify} messages.
                                 * @param message SelectedAnswer message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(message: google.cloud.retail.v2alpha.SearchRequest.ConversationalSearchSpec.UserAnswer.ISelectedAnswer, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified SelectedAnswer message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.SearchRequest.ConversationalSearchSpec.UserAnswer.SelectedAnswer.verify|verify} messages.
                                 * @param message SelectedAnswer message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encodeDelimited(message: google.cloud.retail.v2alpha.SearchRequest.ConversationalSearchSpec.UserAnswer.ISelectedAnswer, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes a SelectedAnswer message from the specified reader or buffer.
                                 * @param reader Reader or buffer to decode from
                                 * @param [length] Message length if known beforehand
                                 * @returns SelectedAnswer
                                 * @throws {Error} If the payload is not 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.retail.v2alpha.SearchRequest.ConversationalSearchSpec.UserAnswer.SelectedAnswer;

                                /**
                                 * Decodes a SelectedAnswer message from the specified reader or buffer, length delimited.
                                 * @param reader Reader or buffer to decode from
                                 * @returns SelectedAnswer
                                 * @throws {Error} If the payload 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.retail.v2alpha.SearchRequest.ConversationalSearchSpec.UserAnswer.SelectedAnswer;

                                /**
                                 * Verifies a SelectedAnswer message.
                                 * @param message Plain 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 SelectedAnswer message from a plain object. Also converts values to their respective internal types.
                                 * @param object Plain object
                                 * @returns SelectedAnswer
                                 */
                                public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.SearchRequest.ConversationalSearchSpec.UserAnswer.SelectedAnswer;

                                /**
                                 * Creates a plain object from a SelectedAnswer message. Also converts values to other types if specified.
                                 * @param message SelectedAnswer
                                 * @param [options] Conversion options
                                 * @returns Plain object
                                 */
                                public static toObject(message: google.cloud.retail.v2alpha.SearchRequest.ConversationalSearchSpec.UserAnswer.SelectedAnswer, options?: $protobuf.IConversionOptions): { [k: string]: any };

                                /**
                                 * Converts this SelectedAnswer to JSON.
                                 * @returns JSON object
                                 */
                                public toJSON(): { [k: string]: any };

                                /**
                                 * Gets the default type url for SelectedAnswer
                                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                                 * @returns The default type url
                                 */
                                public static getTypeUrl(typeUrlPrefix?: string): string;
                            }
                        }
                    }

                    /** Properties of a TileNavigationSpec. */
                    interface ITileNavigationSpec {

                        /** TileNavigationSpec tileNavigationRequested */
                        tileNavigationRequested?: (boolean|null);

                        /** TileNavigationSpec appliedTiles */
                        appliedTiles?: (google.cloud.retail.v2alpha.ITile[]|null);
                    }

                    /** Represents a TileNavigationSpec. */
                    class TileNavigationSpec implements ITileNavigationSpec {

                        /**
                         * Constructs a new TileNavigationSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.SearchRequest.ITileNavigationSpec);

                        /** TileNavigationSpec tileNavigationRequested. */
                        public tileNavigationRequested: boolean;

                        /** TileNavigationSpec appliedTiles. */
                        public appliedTiles: google.cloud.retail.v2alpha.ITile[];

                        /**
                         * Creates a new TileNavigationSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TileNavigationSpec instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.SearchRequest.ITileNavigationSpec): google.cloud.retail.v2alpha.SearchRequest.TileNavigationSpec;

                        /**
                         * Encodes the specified TileNavigationSpec message. Does not implicitly {@link google.cloud.retail.v2alpha.SearchRequest.TileNavigationSpec.verify|verify} messages.
                         * @param message TileNavigationSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.SearchRequest.ITileNavigationSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TileNavigationSpec message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.SearchRequest.TileNavigationSpec.verify|verify} messages.
                         * @param message TileNavigationSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.SearchRequest.ITileNavigationSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TileNavigationSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TileNavigationSpec
                         * @throws {Error} If the payload is not 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.retail.v2alpha.SearchRequest.TileNavigationSpec;

                        /**
                         * Decodes a TileNavigationSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TileNavigationSpec
                         * @throws {Error} If the payload 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.retail.v2alpha.SearchRequest.TileNavigationSpec;

                        /**
                         * Verifies a TileNavigationSpec message.
                         * @param message Plain 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 TileNavigationSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TileNavigationSpec
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.SearchRequest.TileNavigationSpec;

                        /**
                         * Creates a plain object from a TileNavigationSpec message. Also converts values to other types if specified.
                         * @param message TileNavigationSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.SearchRequest.TileNavigationSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TileNavigationSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TileNavigationSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** RelevanceThreshold enum. */
                    enum RelevanceThreshold {
                        RELEVANCE_THRESHOLD_UNSPECIFIED = 0,
                        HIGH = 1,
                        MEDIUM = 2,
                        LOW = 3,
                        LOWEST = 4
                    }

                    /** SearchMode enum. */
                    enum SearchMode {
                        SEARCH_MODE_UNSPECIFIED = 0,
                        PRODUCT_SEARCH_ONLY = 1,
                        FACETED_SEARCH_ONLY = 2
                    }
                }

                /** Properties of a SearchResponse. */
                interface ISearchResponse {

                    /** SearchResponse results */
                    results?: (google.cloud.retail.v2alpha.SearchResponse.ISearchResult[]|null);

                    /** SearchResponse facets */
                    facets?: (google.cloud.retail.v2alpha.SearchResponse.IFacet[]|null);

                    /** SearchResponse totalSize */
                    totalSize?: (number|null);

                    /** SearchResponse correctedQuery */
                    correctedQuery?: (string|null);

                    /** SearchResponse attributionToken */
                    attributionToken?: (string|null);

                    /** SearchResponse nextPageToken */
                    nextPageToken?: (string|null);

                    /** SearchResponse queryExpansionInfo */
                    queryExpansionInfo?: (google.cloud.retail.v2alpha.SearchResponse.IQueryExpansionInfo|null);

                    /** SearchResponse redirectUri */
                    redirectUri?: (string|null);

                    /** SearchResponse appliedControls */
                    appliedControls?: (string[]|null);

                    /** SearchResponse pinControlMetadata */
                    pinControlMetadata?: (google.cloud.retail.v2alpha.IPinControlMetadata|null);

                    /** SearchResponse invalidConditionBoostSpecs */
                    invalidConditionBoostSpecs?: (google.cloud.retail.v2alpha.SearchRequest.BoostSpec.IConditionBoostSpec[]|null);

                    /** SearchResponse experimentInfo */
                    experimentInfo?: (google.cloud.retail.v2alpha.IExperimentInfo[]|null);

                    /** SearchResponse conversationalSearchResult */
                    conversationalSearchResult?: (google.cloud.retail.v2alpha.SearchResponse.IConversationalSearchResult|null);

                    /** SearchResponse tileNavigationResult */
                    tileNavigationResult?: (google.cloud.retail.v2alpha.SearchResponse.ITileNavigationResult|null);
                }

                /** Represents a SearchResponse. */
                class SearchResponse implements ISearchResponse {

                    /**
                     * Constructs a new SearchResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.ISearchResponse);

                    /** SearchResponse results. */
                    public results: google.cloud.retail.v2alpha.SearchResponse.ISearchResult[];

                    /** SearchResponse facets. */
                    public facets: google.cloud.retail.v2alpha.SearchResponse.IFacet[];

                    /** SearchResponse totalSize. */
                    public totalSize: number;

                    /** SearchResponse correctedQuery. */
                    public correctedQuery: string;

                    /** SearchResponse attributionToken. */
                    public attributionToken: string;

                    /** SearchResponse nextPageToken. */
                    public nextPageToken: string;

                    /** SearchResponse queryExpansionInfo. */
                    public queryExpansionInfo?: (google.cloud.retail.v2alpha.SearchResponse.IQueryExpansionInfo|null);

                    /** SearchResponse redirectUri. */
                    public redirectUri: string;

                    /** SearchResponse appliedControls. */
                    public appliedControls: string[];

                    /** SearchResponse pinControlMetadata. */
                    public pinControlMetadata?: (google.cloud.retail.v2alpha.IPinControlMetadata|null);

                    /** SearchResponse invalidConditionBoostSpecs. */
                    public invalidConditionBoostSpecs: google.cloud.retail.v2alpha.SearchRequest.BoostSpec.IConditionBoostSpec[];

                    /** SearchResponse experimentInfo. */
                    public experimentInfo: google.cloud.retail.v2alpha.IExperimentInfo[];

                    /** SearchResponse conversationalSearchResult. */
                    public conversationalSearchResult?: (google.cloud.retail.v2alpha.SearchResponse.IConversationalSearchResult|null);

                    /** SearchResponse tileNavigationResult. */
                    public tileNavigationResult?: (google.cloud.retail.v2alpha.SearchResponse.ITileNavigationResult|null);

                    /**
                     * Creates a new SearchResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SearchResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.ISearchResponse): google.cloud.retail.v2alpha.SearchResponse;

                    /**
                     * Encodes the specified SearchResponse message. Does not implicitly {@link google.cloud.retail.v2alpha.SearchResponse.verify|verify} messages.
                     * @param message SearchResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.ISearchResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SearchResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.SearchResponse.verify|verify} messages.
                     * @param message SearchResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.ISearchResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SearchResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SearchResponse
                     * @throws {Error} If the payload is not 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.retail.v2alpha.SearchResponse;

                    /**
                     * Decodes a SearchResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SearchResponse
                     * @throws {Error} If the payload 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.retail.v2alpha.SearchResponse;

                    /**
                     * Verifies a SearchResponse message.
                     * @param message Plain 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 SearchResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SearchResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.SearchResponse;

                    /**
                     * Creates a plain object from a SearchResponse message. Also converts values to other types if specified.
                     * @param message SearchResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.SearchResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SearchResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SearchResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace SearchResponse {

                    /** Properties of a SearchResult. */
                    interface ISearchResult {

                        /** SearchResult id */
                        id?: (string|null);

                        /** SearchResult product */
                        product?: (google.cloud.retail.v2alpha.IProduct|null);

                        /** SearchResult matchingVariantCount */
                        matchingVariantCount?: (number|null);

                        /** SearchResult matchingVariantFields */
                        matchingVariantFields?: ({ [k: string]: google.protobuf.IFieldMask }|null);

                        /** SearchResult variantRollupValues */
                        variantRollupValues?: ({ [k: string]: google.protobuf.IValue }|null);

                        /** SearchResult personalLabels */
                        personalLabels?: (string[]|null);

                        /** SearchResult modelScores */
                        modelScores?: ({ [k: string]: google.cloud.retail.v2alpha.IDoubleList }|null);
                    }

                    /** Represents a SearchResult. */
                    class SearchResult implements ISearchResult {

                        /**
                         * Constructs a new SearchResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.SearchResponse.ISearchResult);

                        /** SearchResult id. */
                        public id: string;

                        /** SearchResult product. */
                        public product?: (google.cloud.retail.v2alpha.IProduct|null);

                        /** SearchResult matchingVariantCount. */
                        public matchingVariantCount: number;

                        /** SearchResult matchingVariantFields. */
                        public matchingVariantFields: { [k: string]: google.protobuf.IFieldMask };

                        /** SearchResult variantRollupValues. */
                        public variantRollupValues: { [k: string]: google.protobuf.IValue };

                        /** SearchResult personalLabels. */
                        public personalLabels: string[];

                        /** SearchResult modelScores. */
                        public modelScores: { [k: string]: google.cloud.retail.v2alpha.IDoubleList };

                        /**
                         * Creates a new SearchResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SearchResult instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.SearchResponse.ISearchResult): google.cloud.retail.v2alpha.SearchResponse.SearchResult;

                        /**
                         * Encodes the specified SearchResult message. Does not implicitly {@link google.cloud.retail.v2alpha.SearchResponse.SearchResult.verify|verify} messages.
                         * @param message SearchResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.SearchResponse.ISearchResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SearchResult message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.SearchResponse.SearchResult.verify|verify} messages.
                         * @param message SearchResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.SearchResponse.ISearchResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SearchResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SearchResult
                         * @throws {Error} If the payload is not 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.retail.v2alpha.SearchResponse.SearchResult;

                        /**
                         * Decodes a SearchResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SearchResult
                         * @throws {Error} If the payload 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.retail.v2alpha.SearchResponse.SearchResult;

                        /**
                         * Verifies a SearchResult message.
                         * @param message Plain 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 SearchResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SearchResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.SearchResponse.SearchResult;

                        /**
                         * Creates a plain object from a SearchResult message. Also converts values to other types if specified.
                         * @param message SearchResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.SearchResponse.SearchResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SearchResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SearchResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a Facet. */
                    interface IFacet {

                        /** Facet key */
                        key?: (string|null);

                        /** Facet values */
                        values?: (google.cloud.retail.v2alpha.SearchResponse.Facet.IFacetValue[]|null);

                        /** Facet dynamicFacet */
                        dynamicFacet?: (boolean|null);
                    }

                    /** Represents a Facet. */
                    class Facet implements IFacet {

                        /**
                         * Constructs a new Facet.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.SearchResponse.IFacet);

                        /** Facet key. */
                        public key: string;

                        /** Facet values. */
                        public values: google.cloud.retail.v2alpha.SearchResponse.Facet.IFacetValue[];

                        /** Facet dynamicFacet. */
                        public dynamicFacet: boolean;

                        /**
                         * Creates a new Facet instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Facet instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.SearchResponse.IFacet): google.cloud.retail.v2alpha.SearchResponse.Facet;

                        /**
                         * Encodes the specified Facet message. Does not implicitly {@link google.cloud.retail.v2alpha.SearchResponse.Facet.verify|verify} messages.
                         * @param message Facet message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.SearchResponse.IFacet, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Facet message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.SearchResponse.Facet.verify|verify} messages.
                         * @param message Facet message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.SearchResponse.IFacet, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Facet message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Facet
                         * @throws {Error} If the payload is not 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.retail.v2alpha.SearchResponse.Facet;

                        /**
                         * Decodes a Facet message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Facet
                         * @throws {Error} If the payload 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.retail.v2alpha.SearchResponse.Facet;

                        /**
                         * Verifies a Facet message.
                         * @param message Plain 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 Facet message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Facet
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.SearchResponse.Facet;

                        /**
                         * Creates a plain object from a Facet message. Also converts values to other types if specified.
                         * @param message Facet
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.SearchResponse.Facet, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Facet to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Facet
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace Facet {

                        /** Properties of a FacetValue. */
                        interface IFacetValue {

                            /** FacetValue value */
                            value?: (string|null);

                            /** FacetValue interval */
                            interval?: (google.cloud.retail.v2alpha.IInterval|null);

                            /** FacetValue count */
                            count?: (number|Long|string|null);

                            /** FacetValue minValue */
                            minValue?: (number|null);

                            /** FacetValue maxValue */
                            maxValue?: (number|null);
                        }

                        /** Represents a FacetValue. */
                        class FacetValue implements IFacetValue {

                            /**
                             * Constructs a new FacetValue.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2alpha.SearchResponse.Facet.IFacetValue);

                            /** FacetValue value. */
                            public value?: (string|null);

                            /** FacetValue interval. */
                            public interval?: (google.cloud.retail.v2alpha.IInterval|null);

                            /** FacetValue count. */
                            public count: (number|Long|string);

                            /** FacetValue minValue. */
                            public minValue: number;

                            /** FacetValue maxValue. */
                            public maxValue: number;

                            /** FacetValue facetValue. */
                            public facetValue?: ("value"|"interval");

                            /**
                             * Creates a new FacetValue instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns FacetValue instance
                             */
                            public static create(properties?: google.cloud.retail.v2alpha.SearchResponse.Facet.IFacetValue): google.cloud.retail.v2alpha.SearchResponse.Facet.FacetValue;

                            /**
                             * Encodes the specified FacetValue message. Does not implicitly {@link google.cloud.retail.v2alpha.SearchResponse.Facet.FacetValue.verify|verify} messages.
                             * @param message FacetValue message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.retail.v2alpha.SearchResponse.Facet.IFacetValue, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified FacetValue message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.SearchResponse.Facet.FacetValue.verify|verify} messages.
                             * @param message FacetValue message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.retail.v2alpha.SearchResponse.Facet.IFacetValue, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a FacetValue message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns FacetValue
                             * @throws {Error} If the payload is not 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.retail.v2alpha.SearchResponse.Facet.FacetValue;

                            /**
                             * Decodes a FacetValue message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns FacetValue
                             * @throws {Error} If the payload 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.retail.v2alpha.SearchResponse.Facet.FacetValue;

                            /**
                             * Verifies a FacetValue message.
                             * @param message Plain 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 FacetValue message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns FacetValue
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.SearchResponse.Facet.FacetValue;

                            /**
                             * Creates a plain object from a FacetValue message. Also converts values to other types if specified.
                             * @param message FacetValue
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.retail.v2alpha.SearchResponse.Facet.FacetValue, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this FacetValue to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for FacetValue
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a QueryExpansionInfo. */
                    interface IQueryExpansionInfo {

                        /** QueryExpansionInfo expandedQuery */
                        expandedQuery?: (boolean|null);

                        /** QueryExpansionInfo pinnedResultCount */
                        pinnedResultCount?: (number|Long|string|null);
                    }

                    /** Represents a QueryExpansionInfo. */
                    class QueryExpansionInfo implements IQueryExpansionInfo {

                        /**
                         * Constructs a new QueryExpansionInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.SearchResponse.IQueryExpansionInfo);

                        /** QueryExpansionInfo expandedQuery. */
                        public expandedQuery: boolean;

                        /** QueryExpansionInfo pinnedResultCount. */
                        public pinnedResultCount: (number|Long|string);

                        /**
                         * Creates a new QueryExpansionInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns QueryExpansionInfo instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.SearchResponse.IQueryExpansionInfo): google.cloud.retail.v2alpha.SearchResponse.QueryExpansionInfo;

                        /**
                         * Encodes the specified QueryExpansionInfo message. Does not implicitly {@link google.cloud.retail.v2alpha.SearchResponse.QueryExpansionInfo.verify|verify} messages.
                         * @param message QueryExpansionInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.SearchResponse.IQueryExpansionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified QueryExpansionInfo message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.SearchResponse.QueryExpansionInfo.verify|verify} messages.
                         * @param message QueryExpansionInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.SearchResponse.IQueryExpansionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a QueryExpansionInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns QueryExpansionInfo
                         * @throws {Error} If the payload is not 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.retail.v2alpha.SearchResponse.QueryExpansionInfo;

                        /**
                         * Decodes a QueryExpansionInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns QueryExpansionInfo
                         * @throws {Error} If the payload 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.retail.v2alpha.SearchResponse.QueryExpansionInfo;

                        /**
                         * Verifies a QueryExpansionInfo message.
                         * @param message Plain 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 QueryExpansionInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns QueryExpansionInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.SearchResponse.QueryExpansionInfo;

                        /**
                         * Creates a plain object from a QueryExpansionInfo message. Also converts values to other types if specified.
                         * @param message QueryExpansionInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.SearchResponse.QueryExpansionInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this QueryExpansionInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for QueryExpansionInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ConversationalSearchResult. */
                    interface IConversationalSearchResult {

                        /** ConversationalSearchResult conversationId */
                        conversationId?: (string|null);

                        /** ConversationalSearchResult refinedQuery */
                        refinedQuery?: (string|null);

                        /** ConversationalSearchResult additionalFilters */
                        additionalFilters?: (google.cloud.retail.v2alpha.SearchResponse.ConversationalSearchResult.IAdditionalFilter[]|null);

                        /** ConversationalSearchResult followupQuestion */
                        followupQuestion?: (string|null);

                        /** ConversationalSearchResult suggestedAnswers */
                        suggestedAnswers?: (google.cloud.retail.v2alpha.SearchResponse.ConversationalSearchResult.ISuggestedAnswer[]|null);

                        /** ConversationalSearchResult additionalFilter */
                        additionalFilter?: (google.cloud.retail.v2alpha.SearchResponse.ConversationalSearchResult.IAdditionalFilter|null);
                    }

                    /** Represents a ConversationalSearchResult. */
                    class ConversationalSearchResult implements IConversationalSearchResult {

                        /**
                         * Constructs a new ConversationalSearchResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.SearchResponse.IConversationalSearchResult);

                        /** ConversationalSearchResult conversationId. */
                        public conversationId: string;

                        /** ConversationalSearchResult refinedQuery. */
                        public refinedQuery: string;

                        /** ConversationalSearchResult additionalFilters. */
                        public additionalFilters: google.cloud.retail.v2alpha.SearchResponse.ConversationalSearchResult.IAdditionalFilter[];

                        /** ConversationalSearchResult followupQuestion. */
                        public followupQuestion: string;

                        /** ConversationalSearchResult suggestedAnswers. */
                        public suggestedAnswers: google.cloud.retail.v2alpha.SearchResponse.ConversationalSearchResult.ISuggestedAnswer[];

                        /** ConversationalSearchResult additionalFilter. */
                        public additionalFilter?: (google.cloud.retail.v2alpha.SearchResponse.ConversationalSearchResult.IAdditionalFilter|null);

                        /**
                         * Creates a new ConversationalSearchResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversationalSearchResult instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.SearchResponse.IConversationalSearchResult): google.cloud.retail.v2alpha.SearchResponse.ConversationalSearchResult;

                        /**
                         * Encodes the specified ConversationalSearchResult message. Does not implicitly {@link google.cloud.retail.v2alpha.SearchResponse.ConversationalSearchResult.verify|verify} messages.
                         * @param message ConversationalSearchResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.SearchResponse.IConversationalSearchResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversationalSearchResult message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.SearchResponse.ConversationalSearchResult.verify|verify} messages.
                         * @param message ConversationalSearchResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.SearchResponse.IConversationalSearchResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversationalSearchResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversationalSearchResult
                         * @throws {Error} If the payload is not 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.retail.v2alpha.SearchResponse.ConversationalSearchResult;

                        /**
                         * Decodes a ConversationalSearchResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversationalSearchResult
                         * @throws {Error} If the payload 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.retail.v2alpha.SearchResponse.ConversationalSearchResult;

                        /**
                         * Verifies a ConversationalSearchResult message.
                         * @param message Plain 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 ConversationalSearchResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversationalSearchResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.SearchResponse.ConversationalSearchResult;

                        /**
                         * Creates a plain object from a ConversationalSearchResult message. Also converts values to other types if specified.
                         * @param message ConversationalSearchResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.SearchResponse.ConversationalSearchResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversationalSearchResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversationalSearchResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ConversationalSearchResult {

                        /** Properties of a SuggestedAnswer. */
                        interface ISuggestedAnswer {

                            /** SuggestedAnswer productAttributeValue */
                            productAttributeValue?: (google.cloud.retail.v2alpha.IProductAttributeValue|null);
                        }

                        /** Represents a SuggestedAnswer. */
                        class SuggestedAnswer implements ISuggestedAnswer {

                            /**
                             * Constructs a new SuggestedAnswer.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2alpha.SearchResponse.ConversationalSearchResult.ISuggestedAnswer);

                            /** SuggestedAnswer productAttributeValue. */
                            public productAttributeValue?: (google.cloud.retail.v2alpha.IProductAttributeValue|null);

                            /**
                             * Creates a new SuggestedAnswer instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns SuggestedAnswer instance
                             */
                            public static create(properties?: google.cloud.retail.v2alpha.SearchResponse.ConversationalSearchResult.ISuggestedAnswer): google.cloud.retail.v2alpha.SearchResponse.ConversationalSearchResult.SuggestedAnswer;

                            /**
                             * Encodes the specified SuggestedAnswer message. Does not implicitly {@link google.cloud.retail.v2alpha.SearchResponse.ConversationalSearchResult.SuggestedAnswer.verify|verify} messages.
                             * @param message SuggestedAnswer message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.retail.v2alpha.SearchResponse.ConversationalSearchResult.ISuggestedAnswer, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified SuggestedAnswer message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.SearchResponse.ConversationalSearchResult.SuggestedAnswer.verify|verify} messages.
                             * @param message SuggestedAnswer message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.retail.v2alpha.SearchResponse.ConversationalSearchResult.ISuggestedAnswer, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a SuggestedAnswer message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns SuggestedAnswer
                             * @throws {Error} If the payload is not 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.retail.v2alpha.SearchResponse.ConversationalSearchResult.SuggestedAnswer;

                            /**
                             * Decodes a SuggestedAnswer message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns SuggestedAnswer
                             * @throws {Error} If the payload 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.retail.v2alpha.SearchResponse.ConversationalSearchResult.SuggestedAnswer;

                            /**
                             * Verifies a SuggestedAnswer message.
                             * @param message Plain 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 SuggestedAnswer message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns SuggestedAnswer
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.SearchResponse.ConversationalSearchResult.SuggestedAnswer;

                            /**
                             * Creates a plain object from a SuggestedAnswer message. Also converts values to other types if specified.
                             * @param message SuggestedAnswer
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.retail.v2alpha.SearchResponse.ConversationalSearchResult.SuggestedAnswer, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this SuggestedAnswer to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for SuggestedAnswer
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of an AdditionalFilter. */
                        interface IAdditionalFilter {

                            /** AdditionalFilter productAttributeValue */
                            productAttributeValue?: (google.cloud.retail.v2alpha.IProductAttributeValue|null);
                        }

                        /** Represents an AdditionalFilter. */
                        class AdditionalFilter implements IAdditionalFilter {

                            /**
                             * Constructs a new AdditionalFilter.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2alpha.SearchResponse.ConversationalSearchResult.IAdditionalFilter);

                            /** AdditionalFilter productAttributeValue. */
                            public productAttributeValue?: (google.cloud.retail.v2alpha.IProductAttributeValue|null);

                            /**
                             * Creates a new AdditionalFilter instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns AdditionalFilter instance
                             */
                            public static create(properties?: google.cloud.retail.v2alpha.SearchResponse.ConversationalSearchResult.IAdditionalFilter): google.cloud.retail.v2alpha.SearchResponse.ConversationalSearchResult.AdditionalFilter;

                            /**
                             * Encodes the specified AdditionalFilter message. Does not implicitly {@link google.cloud.retail.v2alpha.SearchResponse.ConversationalSearchResult.AdditionalFilter.verify|verify} messages.
                             * @param message AdditionalFilter message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.retail.v2alpha.SearchResponse.ConversationalSearchResult.IAdditionalFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified AdditionalFilter message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.SearchResponse.ConversationalSearchResult.AdditionalFilter.verify|verify} messages.
                             * @param message AdditionalFilter message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.retail.v2alpha.SearchResponse.ConversationalSearchResult.IAdditionalFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an AdditionalFilter message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns AdditionalFilter
                             * @throws {Error} If the payload is not 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.retail.v2alpha.SearchResponse.ConversationalSearchResult.AdditionalFilter;

                            /**
                             * Decodes an AdditionalFilter message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns AdditionalFilter
                             * @throws {Error} If the payload 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.retail.v2alpha.SearchResponse.ConversationalSearchResult.AdditionalFilter;

                            /**
                             * Verifies an AdditionalFilter message.
                             * @param message Plain 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 AdditionalFilter message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns AdditionalFilter
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.SearchResponse.ConversationalSearchResult.AdditionalFilter;

                            /**
                             * Creates a plain object from an AdditionalFilter message. Also converts values to other types if specified.
                             * @param message AdditionalFilter
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.retail.v2alpha.SearchResponse.ConversationalSearchResult.AdditionalFilter, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this AdditionalFilter to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for AdditionalFilter
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a TileNavigationResult. */
                    interface ITileNavigationResult {

                        /** TileNavigationResult tiles */
                        tiles?: (google.cloud.retail.v2alpha.ITile[]|null);
                    }

                    /** Represents a TileNavigationResult. */
                    class TileNavigationResult implements ITileNavigationResult {

                        /**
                         * Constructs a new TileNavigationResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.SearchResponse.ITileNavigationResult);

                        /** TileNavigationResult tiles. */
                        public tiles: google.cloud.retail.v2alpha.ITile[];

                        /**
                         * Creates a new TileNavigationResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TileNavigationResult instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.SearchResponse.ITileNavigationResult): google.cloud.retail.v2alpha.SearchResponse.TileNavigationResult;

                        /**
                         * Encodes the specified TileNavigationResult message. Does not implicitly {@link google.cloud.retail.v2alpha.SearchResponse.TileNavigationResult.verify|verify} messages.
                         * @param message TileNavigationResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.SearchResponse.ITileNavigationResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TileNavigationResult message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.SearchResponse.TileNavigationResult.verify|verify} messages.
                         * @param message TileNavigationResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.SearchResponse.ITileNavigationResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TileNavigationResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TileNavigationResult
                         * @throws {Error} If the payload is not 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.retail.v2alpha.SearchResponse.TileNavigationResult;

                        /**
                         * Decodes a TileNavigationResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TileNavigationResult
                         * @throws {Error} If the payload 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.retail.v2alpha.SearchResponse.TileNavigationResult;

                        /**
                         * Verifies a TileNavigationResult message.
                         * @param message Plain 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 TileNavigationResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TileNavigationResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.SearchResponse.TileNavigationResult;

                        /**
                         * Creates a plain object from a TileNavigationResult message. Also converts values to other types if specified.
                         * @param message TileNavigationResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.SearchResponse.TileNavigationResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TileNavigationResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TileNavigationResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of an ExperimentInfo. */
                interface IExperimentInfo {

                    /** ExperimentInfo servingConfigExperiment */
                    servingConfigExperiment?: (google.cloud.retail.v2alpha.ExperimentInfo.IServingConfigExperiment|null);

                    /** ExperimentInfo experiment */
                    experiment?: (string|null);
                }

                /** Represents an ExperimentInfo. */
                class ExperimentInfo implements IExperimentInfo {

                    /**
                     * Constructs a new ExperimentInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IExperimentInfo);

                    /** ExperimentInfo servingConfigExperiment. */
                    public servingConfigExperiment?: (google.cloud.retail.v2alpha.ExperimentInfo.IServingConfigExperiment|null);

                    /** ExperimentInfo experiment. */
                    public experiment: string;

                    /** ExperimentInfo experimentMetadata. */
                    public experimentMetadata?: "servingConfigExperiment";

                    /**
                     * Creates a new ExperimentInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ExperimentInfo instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IExperimentInfo): google.cloud.retail.v2alpha.ExperimentInfo;

                    /**
                     * Encodes the specified ExperimentInfo message. Does not implicitly {@link google.cloud.retail.v2alpha.ExperimentInfo.verify|verify} messages.
                     * @param message ExperimentInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IExperimentInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ExperimentInfo message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ExperimentInfo.verify|verify} messages.
                     * @param message ExperimentInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IExperimentInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ExperimentInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ExperimentInfo
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ExperimentInfo;

                    /**
                     * Decodes an ExperimentInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ExperimentInfo
                     * @throws {Error} If the payload 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.retail.v2alpha.ExperimentInfo;

                    /**
                     * Verifies an ExperimentInfo message.
                     * @param message Plain 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 ExperimentInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ExperimentInfo
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ExperimentInfo;

                    /**
                     * Creates a plain object from an ExperimentInfo message. Also converts values to other types if specified.
                     * @param message ExperimentInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ExperimentInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ExperimentInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ExperimentInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace ExperimentInfo {

                    /** Properties of a ServingConfigExperiment. */
                    interface IServingConfigExperiment {

                        /** ServingConfigExperiment originalServingConfig */
                        originalServingConfig?: (string|null);

                        /** ServingConfigExperiment experimentServingConfig */
                        experimentServingConfig?: (string|null);
                    }

                    /** Represents a ServingConfigExperiment. */
                    class ServingConfigExperiment implements IServingConfigExperiment {

                        /**
                         * Constructs a new ServingConfigExperiment.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.ExperimentInfo.IServingConfigExperiment);

                        /** ServingConfigExperiment originalServingConfig. */
                        public originalServingConfig: string;

                        /** ServingConfigExperiment experimentServingConfig. */
                        public experimentServingConfig: string;

                        /**
                         * Creates a new ServingConfigExperiment instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ServingConfigExperiment instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.ExperimentInfo.IServingConfigExperiment): google.cloud.retail.v2alpha.ExperimentInfo.ServingConfigExperiment;

                        /**
                         * Encodes the specified ServingConfigExperiment message. Does not implicitly {@link google.cloud.retail.v2alpha.ExperimentInfo.ServingConfigExperiment.verify|verify} messages.
                         * @param message ServingConfigExperiment message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.ExperimentInfo.IServingConfigExperiment, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ServingConfigExperiment message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ExperimentInfo.ServingConfigExperiment.verify|verify} messages.
                         * @param message ServingConfigExperiment message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.ExperimentInfo.IServingConfigExperiment, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ServingConfigExperiment message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ServingConfigExperiment
                         * @throws {Error} If the payload is not 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.retail.v2alpha.ExperimentInfo.ServingConfigExperiment;

                        /**
                         * Decodes a ServingConfigExperiment message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ServingConfigExperiment
                         * @throws {Error} If the payload 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.retail.v2alpha.ExperimentInfo.ServingConfigExperiment;

                        /**
                         * Verifies a ServingConfigExperiment message.
                         * @param message Plain 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 ServingConfigExperiment message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ServingConfigExperiment
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ExperimentInfo.ServingConfigExperiment;

                        /**
                         * Creates a plain object from a ServingConfigExperiment message. Also converts values to other types if specified.
                         * @param message ServingConfigExperiment
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.ExperimentInfo.ServingConfigExperiment, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ServingConfigExperiment to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ServingConfigExperiment
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of a Control. */
                interface IControl {

                    /** Control facetSpec */
                    facetSpec?: (google.cloud.retail.v2alpha.SearchRequest.IFacetSpec|null);

                    /** Control rule */
                    rule?: (google.cloud.retail.v2alpha.IRule|null);

                    /** Control name */
                    name?: (string|null);

                    /** Control displayName */
                    displayName?: (string|null);

                    /** Control associatedServingConfigIds */
                    associatedServingConfigIds?: (string[]|null);

                    /** Control solutionTypes */
                    solutionTypes?: (google.cloud.retail.v2alpha.SolutionType[]|null);

                    /** Control searchSolutionUseCase */
                    searchSolutionUseCase?: (google.cloud.retail.v2alpha.SearchSolutionUseCase[]|null);
                }

                /** Represents a Control. */
                class Control implements IControl {

                    /**
                     * Constructs a new Control.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IControl);

                    /** Control facetSpec. */
                    public facetSpec?: (google.cloud.retail.v2alpha.SearchRequest.IFacetSpec|null);

                    /** Control rule. */
                    public rule?: (google.cloud.retail.v2alpha.IRule|null);

                    /** Control name. */
                    public name: string;

                    /** Control displayName. */
                    public displayName: string;

                    /** Control associatedServingConfigIds. */
                    public associatedServingConfigIds: string[];

                    /** Control solutionTypes. */
                    public solutionTypes: google.cloud.retail.v2alpha.SolutionType[];

                    /** Control searchSolutionUseCase. */
                    public searchSolutionUseCase: google.cloud.retail.v2alpha.SearchSolutionUseCase[];

                    /** Control control. */
                    public control?: ("facetSpec"|"rule");

                    /**
                     * Creates a new Control instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Control instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IControl): google.cloud.retail.v2alpha.Control;

                    /**
                     * Encodes the specified Control message. Does not implicitly {@link google.cloud.retail.v2alpha.Control.verify|verify} messages.
                     * @param message Control message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IControl, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Control message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.Control.verify|verify} messages.
                     * @param message Control message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IControl, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Control message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Control
                     * @throws {Error} If the payload is not 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.retail.v2alpha.Control;

                    /**
                     * Decodes a Control message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Control
                     * @throws {Error} If the payload 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.retail.v2alpha.Control;

                    /**
                     * Verifies a Control message.
                     * @param message Plain 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 Control message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Control
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.Control;

                    /**
                     * Creates a plain object from a Control message. Also converts values to other types if specified.
                     * @param message Control
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.Control, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Control to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Control
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Represents a ControlService */
                class ControlService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new ControlService 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 ControlService 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): ControlService;

                    /**
                     * Calls CreateControl.
                     * @param request CreateControlRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Control
                     */
                    public createControl(request: google.cloud.retail.v2alpha.ICreateControlRequest, callback: google.cloud.retail.v2alpha.ControlService.CreateControlCallback): void;

                    /**
                     * Calls CreateControl.
                     * @param request CreateControlRequest message or plain object
                     * @returns Promise
                     */
                    public createControl(request: google.cloud.retail.v2alpha.ICreateControlRequest): Promise<google.cloud.retail.v2alpha.Control>;

                    /**
                     * Calls DeleteControl.
                     * @param request DeleteControlRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Empty
                     */
                    public deleteControl(request: google.cloud.retail.v2alpha.IDeleteControlRequest, callback: google.cloud.retail.v2alpha.ControlService.DeleteControlCallback): void;

                    /**
                     * Calls DeleteControl.
                     * @param request DeleteControlRequest message or plain object
                     * @returns Promise
                     */
                    public deleteControl(request: google.cloud.retail.v2alpha.IDeleteControlRequest): Promise<google.protobuf.Empty>;

                    /**
                     * Calls UpdateControl.
                     * @param request UpdateControlRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Control
                     */
                    public updateControl(request: google.cloud.retail.v2alpha.IUpdateControlRequest, callback: google.cloud.retail.v2alpha.ControlService.UpdateControlCallback): void;

                    /**
                     * Calls UpdateControl.
                     * @param request UpdateControlRequest message or plain object
                     * @returns Promise
                     */
                    public updateControl(request: google.cloud.retail.v2alpha.IUpdateControlRequest): Promise<google.cloud.retail.v2alpha.Control>;

                    /**
                     * Calls GetControl.
                     * @param request GetControlRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Control
                     */
                    public getControl(request: google.cloud.retail.v2alpha.IGetControlRequest, callback: google.cloud.retail.v2alpha.ControlService.GetControlCallback): void;

                    /**
                     * Calls GetControl.
                     * @param request GetControlRequest message or plain object
                     * @returns Promise
                     */
                    public getControl(request: google.cloud.retail.v2alpha.IGetControlRequest): Promise<google.cloud.retail.v2alpha.Control>;

                    /**
                     * Calls ListControls.
                     * @param request ListControlsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListControlsResponse
                     */
                    public listControls(request: google.cloud.retail.v2alpha.IListControlsRequest, callback: google.cloud.retail.v2alpha.ControlService.ListControlsCallback): void;

                    /**
                     * Calls ListControls.
                     * @param request ListControlsRequest message or plain object
                     * @returns Promise
                     */
                    public listControls(request: google.cloud.retail.v2alpha.IListControlsRequest): Promise<google.cloud.retail.v2alpha.ListControlsResponse>;
                }

                namespace ControlService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ControlService|createControl}.
                     * @param error Error, if any
                     * @param [response] Control
                     */
                    type CreateControlCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.Control) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ControlService|deleteControl}.
                     * @param error Error, if any
                     * @param [response] Empty
                     */
                    type DeleteControlCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ControlService|updateControl}.
                     * @param error Error, if any
                     * @param [response] Control
                     */
                    type UpdateControlCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.Control) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ControlService|getControl}.
                     * @param error Error, if any
                     * @param [response] Control
                     */
                    type GetControlCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.Control) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ControlService|listControls}.
                     * @param error Error, if any
                     * @param [response] ListControlsResponse
                     */
                    type ListControlsCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.ListControlsResponse) => void;
                }

                /** Properties of a CreateControlRequest. */
                interface ICreateControlRequest {

                    /** CreateControlRequest parent */
                    parent?: (string|null);

                    /** CreateControlRequest control */
                    control?: (google.cloud.retail.v2alpha.IControl|null);

                    /** CreateControlRequest controlId */
                    controlId?: (string|null);
                }

                /** Represents a CreateControlRequest. */
                class CreateControlRequest implements ICreateControlRequest {

                    /**
                     * Constructs a new CreateControlRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.ICreateControlRequest);

                    /** CreateControlRequest parent. */
                    public parent: string;

                    /** CreateControlRequest control. */
                    public control?: (google.cloud.retail.v2alpha.IControl|null);

                    /** CreateControlRequest controlId. */
                    public controlId: string;

                    /**
                     * Creates a new CreateControlRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CreateControlRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.ICreateControlRequest): google.cloud.retail.v2alpha.CreateControlRequest;

                    /**
                     * Encodes the specified CreateControlRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.CreateControlRequest.verify|verify} messages.
                     * @param message CreateControlRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.ICreateControlRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CreateControlRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.CreateControlRequest.verify|verify} messages.
                     * @param message CreateControlRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.ICreateControlRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CreateControlRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CreateControlRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.CreateControlRequest;

                    /**
                     * Decodes a CreateControlRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CreateControlRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.CreateControlRequest;

                    /**
                     * Verifies a CreateControlRequest message.
                     * @param message Plain 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 CreateControlRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CreateControlRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.CreateControlRequest;

                    /**
                     * Creates a plain object from a CreateControlRequest message. Also converts values to other types if specified.
                     * @param message CreateControlRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.CreateControlRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CreateControlRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CreateControlRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateControlRequest. */
                interface IUpdateControlRequest {

                    /** UpdateControlRequest control */
                    control?: (google.cloud.retail.v2alpha.IControl|null);

                    /** UpdateControlRequest updateMask */
                    updateMask?: (google.protobuf.IFieldMask|null);
                }

                /** Represents an UpdateControlRequest. */
                class UpdateControlRequest implements IUpdateControlRequest {

                    /**
                     * Constructs a new UpdateControlRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IUpdateControlRequest);

                    /** UpdateControlRequest control. */
                    public control?: (google.cloud.retail.v2alpha.IControl|null);

                    /** UpdateControlRequest updateMask. */
                    public updateMask?: (google.protobuf.IFieldMask|null);

                    /**
                     * Creates a new UpdateControlRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateControlRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IUpdateControlRequest): google.cloud.retail.v2alpha.UpdateControlRequest;

                    /**
                     * Encodes the specified UpdateControlRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.UpdateControlRequest.verify|verify} messages.
                     * @param message UpdateControlRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IUpdateControlRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateControlRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.UpdateControlRequest.verify|verify} messages.
                     * @param message UpdateControlRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IUpdateControlRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateControlRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateControlRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.UpdateControlRequest;

                    /**
                     * Decodes an UpdateControlRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateControlRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.UpdateControlRequest;

                    /**
                     * Verifies an UpdateControlRequest message.
                     * @param message Plain 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 UpdateControlRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateControlRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.UpdateControlRequest;

                    /**
                     * Creates a plain object from an UpdateControlRequest message. Also converts values to other types if specified.
                     * @param message UpdateControlRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.UpdateControlRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateControlRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateControlRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeleteControlRequest. */
                interface IDeleteControlRequest {

                    /** DeleteControlRequest name */
                    name?: (string|null);
                }

                /** Represents a DeleteControlRequest. */
                class DeleteControlRequest implements IDeleteControlRequest {

                    /**
                     * Constructs a new DeleteControlRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IDeleteControlRequest);

                    /** DeleteControlRequest name. */
                    public name: string;

                    /**
                     * Creates a new DeleteControlRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeleteControlRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IDeleteControlRequest): google.cloud.retail.v2alpha.DeleteControlRequest;

                    /**
                     * Encodes the specified DeleteControlRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.DeleteControlRequest.verify|verify} messages.
                     * @param message DeleteControlRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IDeleteControlRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeleteControlRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.DeleteControlRequest.verify|verify} messages.
                     * @param message DeleteControlRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IDeleteControlRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeleteControlRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeleteControlRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.DeleteControlRequest;

                    /**
                     * Decodes a DeleteControlRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeleteControlRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.DeleteControlRequest;

                    /**
                     * Verifies a DeleteControlRequest message.
                     * @param message Plain 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 DeleteControlRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeleteControlRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.DeleteControlRequest;

                    /**
                     * Creates a plain object from a DeleteControlRequest message. Also converts values to other types if specified.
                     * @param message DeleteControlRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.DeleteControlRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeleteControlRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeleteControlRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetControlRequest. */
                interface IGetControlRequest {

                    /** GetControlRequest name */
                    name?: (string|null);
                }

                /** Represents a GetControlRequest. */
                class GetControlRequest implements IGetControlRequest {

                    /**
                     * Constructs a new GetControlRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IGetControlRequest);

                    /** GetControlRequest name. */
                    public name: string;

                    /**
                     * Creates a new GetControlRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetControlRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IGetControlRequest): google.cloud.retail.v2alpha.GetControlRequest;

                    /**
                     * Encodes the specified GetControlRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.GetControlRequest.verify|verify} messages.
                     * @param message GetControlRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IGetControlRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetControlRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.GetControlRequest.verify|verify} messages.
                     * @param message GetControlRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IGetControlRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetControlRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetControlRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.GetControlRequest;

                    /**
                     * Decodes a GetControlRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetControlRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.GetControlRequest;

                    /**
                     * Verifies a GetControlRequest message.
                     * @param message Plain 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 GetControlRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetControlRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.GetControlRequest;

                    /**
                     * Creates a plain object from a GetControlRequest message. Also converts values to other types if specified.
                     * @param message GetControlRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.GetControlRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetControlRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetControlRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListControlsRequest. */
                interface IListControlsRequest {

                    /** ListControlsRequest parent */
                    parent?: (string|null);

                    /** ListControlsRequest pageSize */
                    pageSize?: (number|null);

                    /** ListControlsRequest pageToken */
                    pageToken?: (string|null);

                    /** ListControlsRequest filter */
                    filter?: (string|null);
                }

                /** Represents a ListControlsRequest. */
                class ListControlsRequest implements IListControlsRequest {

                    /**
                     * Constructs a new ListControlsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IListControlsRequest);

                    /** ListControlsRequest parent. */
                    public parent: string;

                    /** ListControlsRequest pageSize. */
                    public pageSize: number;

                    /** ListControlsRequest pageToken. */
                    public pageToken: string;

                    /** ListControlsRequest filter. */
                    public filter: string;

                    /**
                     * Creates a new ListControlsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListControlsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IListControlsRequest): google.cloud.retail.v2alpha.ListControlsRequest;

                    /**
                     * Encodes the specified ListControlsRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.ListControlsRequest.verify|verify} messages.
                     * @param message ListControlsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IListControlsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListControlsRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ListControlsRequest.verify|verify} messages.
                     * @param message ListControlsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IListControlsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListControlsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListControlsRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ListControlsRequest;

                    /**
                     * Decodes a ListControlsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListControlsRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.ListControlsRequest;

                    /**
                     * Verifies a ListControlsRequest message.
                     * @param message Plain 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 ListControlsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListControlsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ListControlsRequest;

                    /**
                     * Creates a plain object from a ListControlsRequest message. Also converts values to other types if specified.
                     * @param message ListControlsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ListControlsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListControlsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListControlsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListControlsResponse. */
                interface IListControlsResponse {

                    /** ListControlsResponse controls */
                    controls?: (google.cloud.retail.v2alpha.IControl[]|null);

                    /** ListControlsResponse nextPageToken */
                    nextPageToken?: (string|null);
                }

                /** Represents a ListControlsResponse. */
                class ListControlsResponse implements IListControlsResponse {

                    /**
                     * Constructs a new ListControlsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IListControlsResponse);

                    /** ListControlsResponse controls. */
                    public controls: google.cloud.retail.v2alpha.IControl[];

                    /** ListControlsResponse nextPageToken. */
                    public nextPageToken: string;

                    /**
                     * Creates a new ListControlsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListControlsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IListControlsResponse): google.cloud.retail.v2alpha.ListControlsResponse;

                    /**
                     * Encodes the specified ListControlsResponse message. Does not implicitly {@link google.cloud.retail.v2alpha.ListControlsResponse.verify|verify} messages.
                     * @param message ListControlsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IListControlsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListControlsResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ListControlsResponse.verify|verify} messages.
                     * @param message ListControlsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IListControlsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListControlsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListControlsResponse
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ListControlsResponse;

                    /**
                     * Decodes a ListControlsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListControlsResponse
                     * @throws {Error} If the payload 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.retail.v2alpha.ListControlsResponse;

                    /**
                     * Verifies a ListControlsResponse message.
                     * @param message Plain 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 ListControlsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListControlsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ListControlsResponse;

                    /**
                     * Creates a plain object from a ListControlsResponse message. Also converts values to other types if specified.
                     * @param message ListControlsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ListControlsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListControlsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListControlsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Represents a ConversationalSearchService */
                class ConversationalSearchService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new ConversationalSearchService 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 ConversationalSearchService 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): ConversationalSearchService;

                    /**
                     * Calls ConversationalSearch.
                     * @param request ConversationalSearchRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ConversationalSearchResponse
                     */
                    public conversationalSearch(request: google.cloud.retail.v2alpha.IConversationalSearchRequest, callback: google.cloud.retail.v2alpha.ConversationalSearchService.ConversationalSearchCallback): void;

                    /**
                     * Calls ConversationalSearch.
                     * @param request ConversationalSearchRequest message or plain object
                     * @returns Promise
                     */
                    public conversationalSearch(request: google.cloud.retail.v2alpha.IConversationalSearchRequest): Promise<google.cloud.retail.v2alpha.ConversationalSearchResponse>;
                }

                namespace ConversationalSearchService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ConversationalSearchService|conversationalSearch}.
                     * @param error Error, if any
                     * @param [response] ConversationalSearchResponse
                     */
                    type ConversationalSearchCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.ConversationalSearchResponse) => void;
                }

                /** Properties of a ConversationalSearchRequest. */
                interface IConversationalSearchRequest {

                    /** ConversationalSearchRequest placement */
                    placement?: (string|null);

                    /** ConversationalSearchRequest branch */
                    branch?: (string|null);

                    /** ConversationalSearchRequest query */
                    query?: (string|null);

                    /** ConversationalSearchRequest pageCategories */
                    pageCategories?: (string[]|null);

                    /** ConversationalSearchRequest conversationId */
                    conversationId?: (string|null);

                    /** ConversationalSearchRequest searchParams */
                    searchParams?: (google.cloud.retail.v2alpha.ConversationalSearchRequest.ISearchParams|null);

                    /** ConversationalSearchRequest visitorId */
                    visitorId?: (string|null);

                    /** ConversationalSearchRequest userInfo */
                    userInfo?: (google.cloud.retail.v2alpha.IUserInfo|null);

                    /** ConversationalSearchRequest conversationalFilteringSpec */
                    conversationalFilteringSpec?: (google.cloud.retail.v2alpha.ConversationalSearchRequest.IConversationalFilteringSpec|null);

                    /** ConversationalSearchRequest userLabels */
                    userLabels?: ({ [k: string]: string }|null);

                    /** ConversationalSearchRequest safetySettings */
                    safetySettings?: (google.cloud.retail.v2alpha.ISafetySetting[]|null);
                }

                /** Represents a ConversationalSearchRequest. */
                class ConversationalSearchRequest implements IConversationalSearchRequest {

                    /**
                     * Constructs a new ConversationalSearchRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IConversationalSearchRequest);

                    /** ConversationalSearchRequest placement. */
                    public placement: string;

                    /** ConversationalSearchRequest branch. */
                    public branch: string;

                    /** ConversationalSearchRequest query. */
                    public query: string;

                    /** ConversationalSearchRequest pageCategories. */
                    public pageCategories: string[];

                    /** ConversationalSearchRequest conversationId. */
                    public conversationId: string;

                    /** ConversationalSearchRequest searchParams. */
                    public searchParams?: (google.cloud.retail.v2alpha.ConversationalSearchRequest.ISearchParams|null);

                    /** ConversationalSearchRequest visitorId. */
                    public visitorId: string;

                    /** ConversationalSearchRequest userInfo. */
                    public userInfo?: (google.cloud.retail.v2alpha.IUserInfo|null);

                    /** ConversationalSearchRequest conversationalFilteringSpec. */
                    public conversationalFilteringSpec?: (google.cloud.retail.v2alpha.ConversationalSearchRequest.IConversationalFilteringSpec|null);

                    /** ConversationalSearchRequest userLabels. */
                    public userLabels: { [k: string]: string };

                    /** ConversationalSearchRequest safetySettings. */
                    public safetySettings: google.cloud.retail.v2alpha.ISafetySetting[];

                    /**
                     * Creates a new ConversationalSearchRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ConversationalSearchRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IConversationalSearchRequest): google.cloud.retail.v2alpha.ConversationalSearchRequest;

                    /**
                     * Encodes the specified ConversationalSearchRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.ConversationalSearchRequest.verify|verify} messages.
                     * @param message ConversationalSearchRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IConversationalSearchRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ConversationalSearchRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ConversationalSearchRequest.verify|verify} messages.
                     * @param message ConversationalSearchRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IConversationalSearchRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ConversationalSearchRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ConversationalSearchRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ConversationalSearchRequest;

                    /**
                     * Decodes a ConversationalSearchRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ConversationalSearchRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.ConversationalSearchRequest;

                    /**
                     * Verifies a ConversationalSearchRequest message.
                     * @param message Plain 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 ConversationalSearchRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ConversationalSearchRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ConversationalSearchRequest;

                    /**
                     * Creates a plain object from a ConversationalSearchRequest message. Also converts values to other types if specified.
                     * @param message ConversationalSearchRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ConversationalSearchRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ConversationalSearchRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ConversationalSearchRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace ConversationalSearchRequest {

                    /** Properties of a SearchParams. */
                    interface ISearchParams {

                        /** SearchParams filter */
                        filter?: (string|null);

                        /** SearchParams canonicalFilter */
                        canonicalFilter?: (string|null);

                        /** SearchParams sortBy */
                        sortBy?: (string|null);

                        /** SearchParams boostSpec */
                        boostSpec?: (google.cloud.retail.v2alpha.SearchRequest.IBoostSpec|null);
                    }

                    /** Represents a SearchParams. */
                    class SearchParams implements ISearchParams {

                        /**
                         * Constructs a new SearchParams.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.ConversationalSearchRequest.ISearchParams);

                        /** SearchParams filter. */
                        public filter: string;

                        /** SearchParams canonicalFilter. */
                        public canonicalFilter: string;

                        /** SearchParams sortBy. */
                        public sortBy: string;

                        /** SearchParams boostSpec. */
                        public boostSpec?: (google.cloud.retail.v2alpha.SearchRequest.IBoostSpec|null);

                        /**
                         * Creates a new SearchParams instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SearchParams instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.ConversationalSearchRequest.ISearchParams): google.cloud.retail.v2alpha.ConversationalSearchRequest.SearchParams;

                        /**
                         * Encodes the specified SearchParams message. Does not implicitly {@link google.cloud.retail.v2alpha.ConversationalSearchRequest.SearchParams.verify|verify} messages.
                         * @param message SearchParams message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.ConversationalSearchRequest.ISearchParams, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SearchParams message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ConversationalSearchRequest.SearchParams.verify|verify} messages.
                         * @param message SearchParams message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.ConversationalSearchRequest.ISearchParams, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SearchParams message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SearchParams
                         * @throws {Error} If the payload is not 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.retail.v2alpha.ConversationalSearchRequest.SearchParams;

                        /**
                         * Decodes a SearchParams message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SearchParams
                         * @throws {Error} If the payload 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.retail.v2alpha.ConversationalSearchRequest.SearchParams;

                        /**
                         * Verifies a SearchParams message.
                         * @param message Plain 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 SearchParams message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SearchParams
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ConversationalSearchRequest.SearchParams;

                        /**
                         * Creates a plain object from a SearchParams message. Also converts values to other types if specified.
                         * @param message SearchParams
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.ConversationalSearchRequest.SearchParams, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SearchParams to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SearchParams
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a UserAnswer. */
                    interface IUserAnswer {

                        /** UserAnswer textAnswer */
                        textAnswer?: (string|null);

                        /** UserAnswer selectedAnswer */
                        selectedAnswer?: (google.cloud.retail.v2alpha.ConversationalSearchRequest.UserAnswer.ISelectedAnswer|null);
                    }

                    /** Represents a UserAnswer. */
                    class UserAnswer implements IUserAnswer {

                        /**
                         * Constructs a new UserAnswer.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.ConversationalSearchRequest.IUserAnswer);

                        /** UserAnswer textAnswer. */
                        public textAnswer?: (string|null);

                        /** UserAnswer selectedAnswer. */
                        public selectedAnswer?: (google.cloud.retail.v2alpha.ConversationalSearchRequest.UserAnswer.ISelectedAnswer|null);

                        /** UserAnswer type. */
                        public type?: ("textAnswer"|"selectedAnswer");

                        /**
                         * Creates a new UserAnswer instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserAnswer instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.ConversationalSearchRequest.IUserAnswer): google.cloud.retail.v2alpha.ConversationalSearchRequest.UserAnswer;

                        /**
                         * Encodes the specified UserAnswer message. Does not implicitly {@link google.cloud.retail.v2alpha.ConversationalSearchRequest.UserAnswer.verify|verify} messages.
                         * @param message UserAnswer message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.ConversationalSearchRequest.IUserAnswer, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserAnswer message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ConversationalSearchRequest.UserAnswer.verify|verify} messages.
                         * @param message UserAnswer message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.ConversationalSearchRequest.IUserAnswer, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserAnswer message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserAnswer
                         * @throws {Error} If the payload is not 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.retail.v2alpha.ConversationalSearchRequest.UserAnswer;

                        /**
                         * Decodes a UserAnswer message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserAnswer
                         * @throws {Error} If the payload 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.retail.v2alpha.ConversationalSearchRequest.UserAnswer;

                        /**
                         * Verifies a UserAnswer message.
                         * @param message Plain 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 UserAnswer message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserAnswer
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ConversationalSearchRequest.UserAnswer;

                        /**
                         * Creates a plain object from a UserAnswer message. Also converts values to other types if specified.
                         * @param message UserAnswer
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.ConversationalSearchRequest.UserAnswer, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserAnswer to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserAnswer
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace UserAnswer {

                        /** Properties of a SelectedAnswer. */
                        interface ISelectedAnswer {

                            /** SelectedAnswer productAttributeValue */
                            productAttributeValue?: (google.cloud.retail.v2alpha.IProductAttributeValue|null);
                        }

                        /** Represents a SelectedAnswer. */
                        class SelectedAnswer implements ISelectedAnswer {

                            /**
                             * Constructs a new SelectedAnswer.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2alpha.ConversationalSearchRequest.UserAnswer.ISelectedAnswer);

                            /** SelectedAnswer productAttributeValue. */
                            public productAttributeValue?: (google.cloud.retail.v2alpha.IProductAttributeValue|null);

                            /**
                             * Creates a new SelectedAnswer instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns SelectedAnswer instance
                             */
                            public static create(properties?: google.cloud.retail.v2alpha.ConversationalSearchRequest.UserAnswer.ISelectedAnswer): google.cloud.retail.v2alpha.ConversationalSearchRequest.UserAnswer.SelectedAnswer;

                            /**
                             * Encodes the specified SelectedAnswer message. Does not implicitly {@link google.cloud.retail.v2alpha.ConversationalSearchRequest.UserAnswer.SelectedAnswer.verify|verify} messages.
                             * @param message SelectedAnswer message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.retail.v2alpha.ConversationalSearchRequest.UserAnswer.ISelectedAnswer, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified SelectedAnswer message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ConversationalSearchRequest.UserAnswer.SelectedAnswer.verify|verify} messages.
                             * @param message SelectedAnswer message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.retail.v2alpha.ConversationalSearchRequest.UserAnswer.ISelectedAnswer, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a SelectedAnswer message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns SelectedAnswer
                             * @throws {Error} If the payload is not 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.retail.v2alpha.ConversationalSearchRequest.UserAnswer.SelectedAnswer;

                            /**
                             * Decodes a SelectedAnswer message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns SelectedAnswer
                             * @throws {Error} If the payload 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.retail.v2alpha.ConversationalSearchRequest.UserAnswer.SelectedAnswer;

                            /**
                             * Verifies a SelectedAnswer message.
                             * @param message Plain 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 SelectedAnswer message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns SelectedAnswer
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ConversationalSearchRequest.UserAnswer.SelectedAnswer;

                            /**
                             * Creates a plain object from a SelectedAnswer message. Also converts values to other types if specified.
                             * @param message SelectedAnswer
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.retail.v2alpha.ConversationalSearchRequest.UserAnswer.SelectedAnswer, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this SelectedAnswer to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for SelectedAnswer
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a ConversationalFilteringSpec. */
                    interface IConversationalFilteringSpec {

                        /** ConversationalFilteringSpec enableConversationalFiltering */
                        enableConversationalFiltering?: (boolean|null);

                        /** ConversationalFilteringSpec userAnswer */
                        userAnswer?: (google.cloud.retail.v2alpha.ConversationalSearchRequest.IUserAnswer|null);

                        /** ConversationalFilteringSpec conversationalFilteringMode */
                        conversationalFilteringMode?: (google.cloud.retail.v2alpha.ConversationalSearchRequest.ConversationalFilteringSpec.Mode|keyof typeof google.cloud.retail.v2alpha.ConversationalSearchRequest.ConversationalFilteringSpec.Mode|null);
                    }

                    /** Represents a ConversationalFilteringSpec. */
                    class ConversationalFilteringSpec implements IConversationalFilteringSpec {

                        /**
                         * Constructs a new ConversationalFilteringSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.ConversationalSearchRequest.IConversationalFilteringSpec);

                        /** ConversationalFilteringSpec enableConversationalFiltering. */
                        public enableConversationalFiltering: boolean;

                        /** ConversationalFilteringSpec userAnswer. */
                        public userAnswer?: (google.cloud.retail.v2alpha.ConversationalSearchRequest.IUserAnswer|null);

                        /** ConversationalFilteringSpec conversationalFilteringMode. */
                        public conversationalFilteringMode: (google.cloud.retail.v2alpha.ConversationalSearchRequest.ConversationalFilteringSpec.Mode|keyof typeof google.cloud.retail.v2alpha.ConversationalSearchRequest.ConversationalFilteringSpec.Mode);

                        /**
                         * Creates a new ConversationalFilteringSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversationalFilteringSpec instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.ConversationalSearchRequest.IConversationalFilteringSpec): google.cloud.retail.v2alpha.ConversationalSearchRequest.ConversationalFilteringSpec;

                        /**
                         * Encodes the specified ConversationalFilteringSpec message. Does not implicitly {@link google.cloud.retail.v2alpha.ConversationalSearchRequest.ConversationalFilteringSpec.verify|verify} messages.
                         * @param message ConversationalFilteringSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.ConversationalSearchRequest.IConversationalFilteringSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversationalFilteringSpec message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ConversationalSearchRequest.ConversationalFilteringSpec.verify|verify} messages.
                         * @param message ConversationalFilteringSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.ConversationalSearchRequest.IConversationalFilteringSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversationalFilteringSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversationalFilteringSpec
                         * @throws {Error} If the payload is not 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.retail.v2alpha.ConversationalSearchRequest.ConversationalFilteringSpec;

                        /**
                         * Decodes a ConversationalFilteringSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversationalFilteringSpec
                         * @throws {Error} If the payload 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.retail.v2alpha.ConversationalSearchRequest.ConversationalFilteringSpec;

                        /**
                         * Verifies a ConversationalFilteringSpec message.
                         * @param message Plain 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 ConversationalFilteringSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversationalFilteringSpec
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ConversationalSearchRequest.ConversationalFilteringSpec;

                        /**
                         * Creates a plain object from a ConversationalFilteringSpec message. Also converts values to other types if specified.
                         * @param message ConversationalFilteringSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.ConversationalSearchRequest.ConversationalFilteringSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversationalFilteringSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversationalFilteringSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ConversationalFilteringSpec {

                        /** Mode enum. */
                        enum Mode {
                            MODE_UNSPECIFIED = 0,
                            DISABLED = 1,
                            ENABLED = 2,
                            CONVERSATIONAL_FILTER_ONLY = 3
                        }
                    }
                }

                /** Properties of a ConversationalSearchResponse. */
                interface IConversationalSearchResponse {

                    /** ConversationalSearchResponse userQueryTypes */
                    userQueryTypes?: (string[]|null);

                    /** ConversationalSearchResponse conversationalTextResponse */
                    conversationalTextResponse?: (string|null);

                    /** ConversationalSearchResponse followupQuestion */
                    followupQuestion?: (google.cloud.retail.v2alpha.ConversationalSearchResponse.IFollowupQuestion|null);

                    /** ConversationalSearchResponse conversationId */
                    conversationId?: (string|null);

                    /** ConversationalSearchResponse refinedSearch */
                    refinedSearch?: (google.cloud.retail.v2alpha.ConversationalSearchResponse.IRefinedSearch[]|null);

                    /** ConversationalSearchResponse conversationalFilteringResult */
                    conversationalFilteringResult?: (google.cloud.retail.v2alpha.ConversationalSearchResponse.IConversationalFilteringResult|null);

                    /** ConversationalSearchResponse state */
                    state?: (google.cloud.retail.v2alpha.ConversationalSearchResponse.State|keyof typeof google.cloud.retail.v2alpha.ConversationalSearchResponse.State|null);
                }

                /** Represents a ConversationalSearchResponse. */
                class ConversationalSearchResponse implements IConversationalSearchResponse {

                    /**
                     * Constructs a new ConversationalSearchResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IConversationalSearchResponse);

                    /** ConversationalSearchResponse userQueryTypes. */
                    public userQueryTypes: string[];

                    /** ConversationalSearchResponse conversationalTextResponse. */
                    public conversationalTextResponse: string;

                    /** ConversationalSearchResponse followupQuestion. */
                    public followupQuestion?: (google.cloud.retail.v2alpha.ConversationalSearchResponse.IFollowupQuestion|null);

                    /** ConversationalSearchResponse conversationId. */
                    public conversationId: string;

                    /** ConversationalSearchResponse refinedSearch. */
                    public refinedSearch: google.cloud.retail.v2alpha.ConversationalSearchResponse.IRefinedSearch[];

                    /** ConversationalSearchResponse conversationalFilteringResult. */
                    public conversationalFilteringResult?: (google.cloud.retail.v2alpha.ConversationalSearchResponse.IConversationalFilteringResult|null);

                    /** ConversationalSearchResponse state. */
                    public state: (google.cloud.retail.v2alpha.ConversationalSearchResponse.State|keyof typeof google.cloud.retail.v2alpha.ConversationalSearchResponse.State);

                    /**
                     * Creates a new ConversationalSearchResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ConversationalSearchResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IConversationalSearchResponse): google.cloud.retail.v2alpha.ConversationalSearchResponse;

                    /**
                     * Encodes the specified ConversationalSearchResponse message. Does not implicitly {@link google.cloud.retail.v2alpha.ConversationalSearchResponse.verify|verify} messages.
                     * @param message ConversationalSearchResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IConversationalSearchResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ConversationalSearchResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ConversationalSearchResponse.verify|verify} messages.
                     * @param message ConversationalSearchResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IConversationalSearchResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ConversationalSearchResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ConversationalSearchResponse
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ConversationalSearchResponse;

                    /**
                     * Decodes a ConversationalSearchResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ConversationalSearchResponse
                     * @throws {Error} If the payload 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.retail.v2alpha.ConversationalSearchResponse;

                    /**
                     * Verifies a ConversationalSearchResponse message.
                     * @param message Plain 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 ConversationalSearchResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ConversationalSearchResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ConversationalSearchResponse;

                    /**
                     * Creates a plain object from a ConversationalSearchResponse message. Also converts values to other types if specified.
                     * @param message ConversationalSearchResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ConversationalSearchResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ConversationalSearchResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ConversationalSearchResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace ConversationalSearchResponse {

                    /** Properties of a FollowupQuestion. */
                    interface IFollowupQuestion {

                        /** FollowupQuestion followupQuestion */
                        followupQuestion?: (string|null);

                        /** FollowupQuestion suggestedAnswers */
                        suggestedAnswers?: (google.cloud.retail.v2alpha.ConversationalSearchResponse.FollowupQuestion.ISuggestedAnswer[]|null);
                    }

                    /** Represents a FollowupQuestion. */
                    class FollowupQuestion implements IFollowupQuestion {

                        /**
                         * Constructs a new FollowupQuestion.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.ConversationalSearchResponse.IFollowupQuestion);

                        /** FollowupQuestion followupQuestion. */
                        public followupQuestion: string;

                        /** FollowupQuestion suggestedAnswers. */
                        public suggestedAnswers: google.cloud.retail.v2alpha.ConversationalSearchResponse.FollowupQuestion.ISuggestedAnswer[];

                        /**
                         * Creates a new FollowupQuestion instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FollowupQuestion instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.ConversationalSearchResponse.IFollowupQuestion): google.cloud.retail.v2alpha.ConversationalSearchResponse.FollowupQuestion;

                        /**
                         * Encodes the specified FollowupQuestion message. Does not implicitly {@link google.cloud.retail.v2alpha.ConversationalSearchResponse.FollowupQuestion.verify|verify} messages.
                         * @param message FollowupQuestion message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.ConversationalSearchResponse.IFollowupQuestion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FollowupQuestion message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ConversationalSearchResponse.FollowupQuestion.verify|verify} messages.
                         * @param message FollowupQuestion message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.ConversationalSearchResponse.IFollowupQuestion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FollowupQuestion message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FollowupQuestion
                         * @throws {Error} If the payload is not 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.retail.v2alpha.ConversationalSearchResponse.FollowupQuestion;

                        /**
                         * Decodes a FollowupQuestion message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FollowupQuestion
                         * @throws {Error} If the payload 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.retail.v2alpha.ConversationalSearchResponse.FollowupQuestion;

                        /**
                         * Verifies a FollowupQuestion message.
                         * @param message Plain 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 FollowupQuestion message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FollowupQuestion
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ConversationalSearchResponse.FollowupQuestion;

                        /**
                         * Creates a plain object from a FollowupQuestion message. Also converts values to other types if specified.
                         * @param message FollowupQuestion
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.ConversationalSearchResponse.FollowupQuestion, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FollowupQuestion to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FollowupQuestion
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace FollowupQuestion {

                        /** Properties of a SuggestedAnswer. */
                        interface ISuggestedAnswer {

                            /** SuggestedAnswer productAttributeValue */
                            productAttributeValue?: (google.cloud.retail.v2alpha.IProductAttributeValue|null);
                        }

                        /** Represents a SuggestedAnswer. */
                        class SuggestedAnswer implements ISuggestedAnswer {

                            /**
                             * Constructs a new SuggestedAnswer.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2alpha.ConversationalSearchResponse.FollowupQuestion.ISuggestedAnswer);

                            /** SuggestedAnswer productAttributeValue. */
                            public productAttributeValue?: (google.cloud.retail.v2alpha.IProductAttributeValue|null);

                            /**
                             * Creates a new SuggestedAnswer instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns SuggestedAnswer instance
                             */
                            public static create(properties?: google.cloud.retail.v2alpha.ConversationalSearchResponse.FollowupQuestion.ISuggestedAnswer): google.cloud.retail.v2alpha.ConversationalSearchResponse.FollowupQuestion.SuggestedAnswer;

                            /**
                             * Encodes the specified SuggestedAnswer message. Does not implicitly {@link google.cloud.retail.v2alpha.ConversationalSearchResponse.FollowupQuestion.SuggestedAnswer.verify|verify} messages.
                             * @param message SuggestedAnswer message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.retail.v2alpha.ConversationalSearchResponse.FollowupQuestion.ISuggestedAnswer, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified SuggestedAnswer message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ConversationalSearchResponse.FollowupQuestion.SuggestedAnswer.verify|verify} messages.
                             * @param message SuggestedAnswer message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.retail.v2alpha.ConversationalSearchResponse.FollowupQuestion.ISuggestedAnswer, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a SuggestedAnswer message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns SuggestedAnswer
                             * @throws {Error} If the payload is not 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.retail.v2alpha.ConversationalSearchResponse.FollowupQuestion.SuggestedAnswer;

                            /**
                             * Decodes a SuggestedAnswer message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns SuggestedAnswer
                             * @throws {Error} If the payload 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.retail.v2alpha.ConversationalSearchResponse.FollowupQuestion.SuggestedAnswer;

                            /**
                             * Verifies a SuggestedAnswer message.
                             * @param message Plain 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 SuggestedAnswer message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns SuggestedAnswer
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ConversationalSearchResponse.FollowupQuestion.SuggestedAnswer;

                            /**
                             * Creates a plain object from a SuggestedAnswer message. Also converts values to other types if specified.
                             * @param message SuggestedAnswer
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.retail.v2alpha.ConversationalSearchResponse.FollowupQuestion.SuggestedAnswer, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this SuggestedAnswer to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for SuggestedAnswer
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a RefinedSearch. */
                    interface IRefinedSearch {

                        /** RefinedSearch query */
                        query?: (string|null);
                    }

                    /** Represents a RefinedSearch. */
                    class RefinedSearch implements IRefinedSearch {

                        /**
                         * Constructs a new RefinedSearch.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.ConversationalSearchResponse.IRefinedSearch);

                        /** RefinedSearch query. */
                        public query: string;

                        /**
                         * Creates a new RefinedSearch instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RefinedSearch instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.ConversationalSearchResponse.IRefinedSearch): google.cloud.retail.v2alpha.ConversationalSearchResponse.RefinedSearch;

                        /**
                         * Encodes the specified RefinedSearch message. Does not implicitly {@link google.cloud.retail.v2alpha.ConversationalSearchResponse.RefinedSearch.verify|verify} messages.
                         * @param message RefinedSearch message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.ConversationalSearchResponse.IRefinedSearch, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RefinedSearch message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ConversationalSearchResponse.RefinedSearch.verify|verify} messages.
                         * @param message RefinedSearch message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.ConversationalSearchResponse.IRefinedSearch, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RefinedSearch message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RefinedSearch
                         * @throws {Error} If the payload is not 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.retail.v2alpha.ConversationalSearchResponse.RefinedSearch;

                        /**
                         * Decodes a RefinedSearch message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RefinedSearch
                         * @throws {Error} If the payload 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.retail.v2alpha.ConversationalSearchResponse.RefinedSearch;

                        /**
                         * Verifies a RefinedSearch message.
                         * @param message Plain 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 RefinedSearch message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RefinedSearch
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ConversationalSearchResponse.RefinedSearch;

                        /**
                         * Creates a plain object from a RefinedSearch message. Also converts values to other types if specified.
                         * @param message RefinedSearch
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.ConversationalSearchResponse.RefinedSearch, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RefinedSearch to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RefinedSearch
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ConversationalFilteringResult. */
                    interface IConversationalFilteringResult {

                        /** ConversationalFilteringResult followupQuestion */
                        followupQuestion?: (google.cloud.retail.v2alpha.ConversationalSearchResponse.IFollowupQuestion|null);

                        /** ConversationalFilteringResult additionalFilter */
                        additionalFilter?: (google.cloud.retail.v2alpha.ConversationalSearchResponse.ConversationalFilteringResult.IAdditionalFilter|null);
                    }

                    /** Represents a ConversationalFilteringResult. */
                    class ConversationalFilteringResult implements IConversationalFilteringResult {

                        /**
                         * Constructs a new ConversationalFilteringResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.ConversationalSearchResponse.IConversationalFilteringResult);

                        /** ConversationalFilteringResult followupQuestion. */
                        public followupQuestion?: (google.cloud.retail.v2alpha.ConversationalSearchResponse.IFollowupQuestion|null);

                        /** ConversationalFilteringResult additionalFilter. */
                        public additionalFilter?: (google.cloud.retail.v2alpha.ConversationalSearchResponse.ConversationalFilteringResult.IAdditionalFilter|null);

                        /**
                         * Creates a new ConversationalFilteringResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversationalFilteringResult instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.ConversationalSearchResponse.IConversationalFilteringResult): google.cloud.retail.v2alpha.ConversationalSearchResponse.ConversationalFilteringResult;

                        /**
                         * Encodes the specified ConversationalFilteringResult message. Does not implicitly {@link google.cloud.retail.v2alpha.ConversationalSearchResponse.ConversationalFilteringResult.verify|verify} messages.
                         * @param message ConversationalFilteringResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.ConversationalSearchResponse.IConversationalFilteringResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversationalFilteringResult message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ConversationalSearchResponse.ConversationalFilteringResult.verify|verify} messages.
                         * @param message ConversationalFilteringResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.ConversationalSearchResponse.IConversationalFilteringResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversationalFilteringResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversationalFilteringResult
                         * @throws {Error} If the payload is not 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.retail.v2alpha.ConversationalSearchResponse.ConversationalFilteringResult;

                        /**
                         * Decodes a ConversationalFilteringResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversationalFilteringResult
                         * @throws {Error} If the payload 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.retail.v2alpha.ConversationalSearchResponse.ConversationalFilteringResult;

                        /**
                         * Verifies a ConversationalFilteringResult message.
                         * @param message Plain 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 ConversationalFilteringResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversationalFilteringResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ConversationalSearchResponse.ConversationalFilteringResult;

                        /**
                         * Creates a plain object from a ConversationalFilteringResult message. Also converts values to other types if specified.
                         * @param message ConversationalFilteringResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.ConversationalSearchResponse.ConversationalFilteringResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversationalFilteringResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversationalFilteringResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ConversationalFilteringResult {

                        /** Properties of an AdditionalFilter. */
                        interface IAdditionalFilter {

                            /** AdditionalFilter productAttributeValue */
                            productAttributeValue?: (google.cloud.retail.v2alpha.IProductAttributeValue|null);
                        }

                        /** Represents an AdditionalFilter. */
                        class AdditionalFilter implements IAdditionalFilter {

                            /**
                             * Constructs a new AdditionalFilter.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2alpha.ConversationalSearchResponse.ConversationalFilteringResult.IAdditionalFilter);

                            /** AdditionalFilter productAttributeValue. */
                            public productAttributeValue?: (google.cloud.retail.v2alpha.IProductAttributeValue|null);

                            /**
                             * Creates a new AdditionalFilter instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns AdditionalFilter instance
                             */
                            public static create(properties?: google.cloud.retail.v2alpha.ConversationalSearchResponse.ConversationalFilteringResult.IAdditionalFilter): google.cloud.retail.v2alpha.ConversationalSearchResponse.ConversationalFilteringResult.AdditionalFilter;

                            /**
                             * Encodes the specified AdditionalFilter message. Does not implicitly {@link google.cloud.retail.v2alpha.ConversationalSearchResponse.ConversationalFilteringResult.AdditionalFilter.verify|verify} messages.
                             * @param message AdditionalFilter message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.retail.v2alpha.ConversationalSearchResponse.ConversationalFilteringResult.IAdditionalFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified AdditionalFilter message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ConversationalSearchResponse.ConversationalFilteringResult.AdditionalFilter.verify|verify} messages.
                             * @param message AdditionalFilter message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.retail.v2alpha.ConversationalSearchResponse.ConversationalFilteringResult.IAdditionalFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an AdditionalFilter message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns AdditionalFilter
                             * @throws {Error} If the payload is not 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.retail.v2alpha.ConversationalSearchResponse.ConversationalFilteringResult.AdditionalFilter;

                            /**
                             * Decodes an AdditionalFilter message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns AdditionalFilter
                             * @throws {Error} If the payload 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.retail.v2alpha.ConversationalSearchResponse.ConversationalFilteringResult.AdditionalFilter;

                            /**
                             * Verifies an AdditionalFilter message.
                             * @param message Plain 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 AdditionalFilter message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns AdditionalFilter
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ConversationalSearchResponse.ConversationalFilteringResult.AdditionalFilter;

                            /**
                             * Creates a plain object from an AdditionalFilter message. Also converts values to other types if specified.
                             * @param message AdditionalFilter
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.retail.v2alpha.ConversationalSearchResponse.ConversationalFilteringResult.AdditionalFilter, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this AdditionalFilter to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for AdditionalFilter
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** State enum. */
                    enum State {
                        STATE_UNSPECIFIED = 0,
                        STREAMING = 1,
                        SUCCEEDED = 2
                    }
                }

                /** HarmCategory enum. */
                enum HarmCategory {
                    HARM_CATEGORY_UNSPECIFIED = 0,
                    HARM_CATEGORY_HATE_SPEECH = 1,
                    HARM_CATEGORY_DANGEROUS_CONTENT = 2,
                    HARM_CATEGORY_HARASSMENT = 3,
                    HARM_CATEGORY_SEXUALLY_EXPLICIT = 4,
                    HARM_CATEGORY_CIVIC_INTEGRITY = 5
                }

                /** Properties of a SafetySetting. */
                interface ISafetySetting {

                    /** SafetySetting category */
                    category?: (google.cloud.retail.v2alpha.HarmCategory|keyof typeof google.cloud.retail.v2alpha.HarmCategory|null);

                    /** SafetySetting threshold */
                    threshold?: (google.cloud.retail.v2alpha.SafetySetting.HarmBlockThreshold|keyof typeof google.cloud.retail.v2alpha.SafetySetting.HarmBlockThreshold|null);

                    /** SafetySetting method */
                    method?: (google.cloud.retail.v2alpha.SafetySetting.HarmBlockMethod|keyof typeof google.cloud.retail.v2alpha.SafetySetting.HarmBlockMethod|null);
                }

                /** Represents a SafetySetting. */
                class SafetySetting implements ISafetySetting {

                    /**
                     * Constructs a new SafetySetting.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.ISafetySetting);

                    /** SafetySetting category. */
                    public category: (google.cloud.retail.v2alpha.HarmCategory|keyof typeof google.cloud.retail.v2alpha.HarmCategory);

                    /** SafetySetting threshold. */
                    public threshold: (google.cloud.retail.v2alpha.SafetySetting.HarmBlockThreshold|keyof typeof google.cloud.retail.v2alpha.SafetySetting.HarmBlockThreshold);

                    /** SafetySetting method. */
                    public method: (google.cloud.retail.v2alpha.SafetySetting.HarmBlockMethod|keyof typeof google.cloud.retail.v2alpha.SafetySetting.HarmBlockMethod);

                    /**
                     * Creates a new SafetySetting instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SafetySetting instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.ISafetySetting): google.cloud.retail.v2alpha.SafetySetting;

                    /**
                     * Encodes the specified SafetySetting message. Does not implicitly {@link google.cloud.retail.v2alpha.SafetySetting.verify|verify} messages.
                     * @param message SafetySetting message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.ISafetySetting, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SafetySetting message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.SafetySetting.verify|verify} messages.
                     * @param message SafetySetting message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.ISafetySetting, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SafetySetting message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SafetySetting
                     * @throws {Error} If the payload is not 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.retail.v2alpha.SafetySetting;

                    /**
                     * Decodes a SafetySetting message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SafetySetting
                     * @throws {Error} If the payload 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.retail.v2alpha.SafetySetting;

                    /**
                     * Verifies a SafetySetting message.
                     * @param message Plain 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 SafetySetting message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SafetySetting
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.SafetySetting;

                    /**
                     * Creates a plain object from a SafetySetting message. Also converts values to other types if specified.
                     * @param message SafetySetting
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.SafetySetting, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SafetySetting to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SafetySetting
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace SafetySetting {

                    /** HarmBlockThreshold enum. */
                    enum HarmBlockThreshold {
                        HARM_BLOCK_THRESHOLD_UNSPECIFIED = 0,
                        BLOCK_LOW_AND_ABOVE = 1,
                        BLOCK_MEDIUM_AND_ABOVE = 2,
                        BLOCK_ONLY_HIGH = 3,
                        BLOCK_NONE = 4,
                        OFF = 5
                    }

                    /** HarmBlockMethod enum. */
                    enum HarmBlockMethod {
                        HARM_BLOCK_METHOD_UNSPECIFIED = 0,
                        SEVERITY = 1,
                        PROBABILITY = 2
                    }
                }

                /** Properties of a GenerativeQuestionsFeatureConfig. */
                interface IGenerativeQuestionsFeatureConfig {

                    /** GenerativeQuestionsFeatureConfig catalog */
                    catalog?: (string|null);

                    /** GenerativeQuestionsFeatureConfig featureEnabled */
                    featureEnabled?: (boolean|null);

                    /** GenerativeQuestionsFeatureConfig minimumProducts */
                    minimumProducts?: (number|null);
                }

                /** Represents a GenerativeQuestionsFeatureConfig. */
                class GenerativeQuestionsFeatureConfig implements IGenerativeQuestionsFeatureConfig {

                    /**
                     * Constructs a new GenerativeQuestionsFeatureConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IGenerativeQuestionsFeatureConfig);

                    /** GenerativeQuestionsFeatureConfig catalog. */
                    public catalog: string;

                    /** GenerativeQuestionsFeatureConfig featureEnabled. */
                    public featureEnabled: boolean;

                    /** GenerativeQuestionsFeatureConfig minimumProducts. */
                    public minimumProducts: number;

                    /**
                     * Creates a new GenerativeQuestionsFeatureConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GenerativeQuestionsFeatureConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IGenerativeQuestionsFeatureConfig): google.cloud.retail.v2alpha.GenerativeQuestionsFeatureConfig;

                    /**
                     * Encodes the specified GenerativeQuestionsFeatureConfig message. Does not implicitly {@link google.cloud.retail.v2alpha.GenerativeQuestionsFeatureConfig.verify|verify} messages.
                     * @param message GenerativeQuestionsFeatureConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IGenerativeQuestionsFeatureConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GenerativeQuestionsFeatureConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.GenerativeQuestionsFeatureConfig.verify|verify} messages.
                     * @param message GenerativeQuestionsFeatureConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IGenerativeQuestionsFeatureConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GenerativeQuestionsFeatureConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GenerativeQuestionsFeatureConfig
                     * @throws {Error} If the payload is not 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.retail.v2alpha.GenerativeQuestionsFeatureConfig;

                    /**
                     * Decodes a GenerativeQuestionsFeatureConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GenerativeQuestionsFeatureConfig
                     * @throws {Error} If the payload 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.retail.v2alpha.GenerativeQuestionsFeatureConfig;

                    /**
                     * Verifies a GenerativeQuestionsFeatureConfig message.
                     * @param message Plain 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 GenerativeQuestionsFeatureConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GenerativeQuestionsFeatureConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.GenerativeQuestionsFeatureConfig;

                    /**
                     * Creates a plain object from a GenerativeQuestionsFeatureConfig message. Also converts values to other types if specified.
                     * @param message GenerativeQuestionsFeatureConfig
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.GenerativeQuestionsFeatureConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GenerativeQuestionsFeatureConfig to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GenerativeQuestionsFeatureConfig
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GenerativeQuestionConfig. */
                interface IGenerativeQuestionConfig {

                    /** GenerativeQuestionConfig catalog */
                    catalog?: (string|null);

                    /** GenerativeQuestionConfig facet */
                    facet?: (string|null);

                    /** GenerativeQuestionConfig generatedQuestion */
                    generatedQuestion?: (string|null);

                    /** GenerativeQuestionConfig finalQuestion */
                    finalQuestion?: (string|null);

                    /** GenerativeQuestionConfig exampleValues */
                    exampleValues?: (string[]|null);

                    /** GenerativeQuestionConfig frequency */
                    frequency?: (number|null);

                    /** GenerativeQuestionConfig allowedInConversation */
                    allowedInConversation?: (boolean|null);
                }

                /** Represents a GenerativeQuestionConfig. */
                class GenerativeQuestionConfig implements IGenerativeQuestionConfig {

                    /**
                     * Constructs a new GenerativeQuestionConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IGenerativeQuestionConfig);

                    /** GenerativeQuestionConfig catalog. */
                    public catalog: string;

                    /** GenerativeQuestionConfig facet. */
                    public facet: string;

                    /** GenerativeQuestionConfig generatedQuestion. */
                    public generatedQuestion: string;

                    /** GenerativeQuestionConfig finalQuestion. */
                    public finalQuestion: string;

                    /** GenerativeQuestionConfig exampleValues. */
                    public exampleValues: string[];

                    /** GenerativeQuestionConfig frequency. */
                    public frequency: number;

                    /** GenerativeQuestionConfig allowedInConversation. */
                    public allowedInConversation: boolean;

                    /**
                     * Creates a new GenerativeQuestionConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GenerativeQuestionConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IGenerativeQuestionConfig): google.cloud.retail.v2alpha.GenerativeQuestionConfig;

                    /**
                     * Encodes the specified GenerativeQuestionConfig message. Does not implicitly {@link google.cloud.retail.v2alpha.GenerativeQuestionConfig.verify|verify} messages.
                     * @param message GenerativeQuestionConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IGenerativeQuestionConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GenerativeQuestionConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.GenerativeQuestionConfig.verify|verify} messages.
                     * @param message GenerativeQuestionConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IGenerativeQuestionConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GenerativeQuestionConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GenerativeQuestionConfig
                     * @throws {Error} If the payload is not 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.retail.v2alpha.GenerativeQuestionConfig;

                    /**
                     * Decodes a GenerativeQuestionConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GenerativeQuestionConfig
                     * @throws {Error} If the payload 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.retail.v2alpha.GenerativeQuestionConfig;

                    /**
                     * Verifies a GenerativeQuestionConfig message.
                     * @param message Plain 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 GenerativeQuestionConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GenerativeQuestionConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.GenerativeQuestionConfig;

                    /**
                     * Creates a plain object from a GenerativeQuestionConfig message. Also converts values to other types if specified.
                     * @param message GenerativeQuestionConfig
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.GenerativeQuestionConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GenerativeQuestionConfig to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GenerativeQuestionConfig
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Represents a GenerativeQuestionService */
                class GenerativeQuestionService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new GenerativeQuestionService 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 GenerativeQuestionService 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): GenerativeQuestionService;

                    /**
                     * Calls UpdateGenerativeQuestionsFeatureConfig.
                     * @param request UpdateGenerativeQuestionsFeatureConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and GenerativeQuestionsFeatureConfig
                     */
                    public updateGenerativeQuestionsFeatureConfig(request: google.cloud.retail.v2alpha.IUpdateGenerativeQuestionsFeatureConfigRequest, callback: google.cloud.retail.v2alpha.GenerativeQuestionService.UpdateGenerativeQuestionsFeatureConfigCallback): void;

                    /**
                     * Calls UpdateGenerativeQuestionsFeatureConfig.
                     * @param request UpdateGenerativeQuestionsFeatureConfigRequest message or plain object
                     * @returns Promise
                     */
                    public updateGenerativeQuestionsFeatureConfig(request: google.cloud.retail.v2alpha.IUpdateGenerativeQuestionsFeatureConfigRequest): Promise<google.cloud.retail.v2alpha.GenerativeQuestionsFeatureConfig>;

                    /**
                     * Calls GetGenerativeQuestionsFeatureConfig.
                     * @param request GetGenerativeQuestionsFeatureConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and GenerativeQuestionsFeatureConfig
                     */
                    public getGenerativeQuestionsFeatureConfig(request: google.cloud.retail.v2alpha.IGetGenerativeQuestionsFeatureConfigRequest, callback: google.cloud.retail.v2alpha.GenerativeQuestionService.GetGenerativeQuestionsFeatureConfigCallback): void;

                    /**
                     * Calls GetGenerativeQuestionsFeatureConfig.
                     * @param request GetGenerativeQuestionsFeatureConfigRequest message or plain object
                     * @returns Promise
                     */
                    public getGenerativeQuestionsFeatureConfig(request: google.cloud.retail.v2alpha.IGetGenerativeQuestionsFeatureConfigRequest): Promise<google.cloud.retail.v2alpha.GenerativeQuestionsFeatureConfig>;

                    /**
                     * Calls ListGenerativeQuestionConfigs.
                     * @param request ListGenerativeQuestionConfigsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListGenerativeQuestionConfigsResponse
                     */
                    public listGenerativeQuestionConfigs(request: google.cloud.retail.v2alpha.IListGenerativeQuestionConfigsRequest, callback: google.cloud.retail.v2alpha.GenerativeQuestionService.ListGenerativeQuestionConfigsCallback): void;

                    /**
                     * Calls ListGenerativeQuestionConfigs.
                     * @param request ListGenerativeQuestionConfigsRequest message or plain object
                     * @returns Promise
                     */
                    public listGenerativeQuestionConfigs(request: google.cloud.retail.v2alpha.IListGenerativeQuestionConfigsRequest): Promise<google.cloud.retail.v2alpha.ListGenerativeQuestionConfigsResponse>;

                    /**
                     * Calls UpdateGenerativeQuestionConfig.
                     * @param request UpdateGenerativeQuestionConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and GenerativeQuestionConfig
                     */
                    public updateGenerativeQuestionConfig(request: google.cloud.retail.v2alpha.IUpdateGenerativeQuestionConfigRequest, callback: google.cloud.retail.v2alpha.GenerativeQuestionService.UpdateGenerativeQuestionConfigCallback): void;

                    /**
                     * Calls UpdateGenerativeQuestionConfig.
                     * @param request UpdateGenerativeQuestionConfigRequest message or plain object
                     * @returns Promise
                     */
                    public updateGenerativeQuestionConfig(request: google.cloud.retail.v2alpha.IUpdateGenerativeQuestionConfigRequest): Promise<google.cloud.retail.v2alpha.GenerativeQuestionConfig>;

                    /**
                     * Calls BatchUpdateGenerativeQuestionConfigs.
                     * @param request BatchUpdateGenerativeQuestionConfigsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and BatchUpdateGenerativeQuestionConfigsResponse
                     */
                    public batchUpdateGenerativeQuestionConfigs(request: google.cloud.retail.v2alpha.IBatchUpdateGenerativeQuestionConfigsRequest, callback: google.cloud.retail.v2alpha.GenerativeQuestionService.BatchUpdateGenerativeQuestionConfigsCallback): void;

                    /**
                     * Calls BatchUpdateGenerativeQuestionConfigs.
                     * @param request BatchUpdateGenerativeQuestionConfigsRequest message or plain object
                     * @returns Promise
                     */
                    public batchUpdateGenerativeQuestionConfigs(request: google.cloud.retail.v2alpha.IBatchUpdateGenerativeQuestionConfigsRequest): Promise<google.cloud.retail.v2alpha.BatchUpdateGenerativeQuestionConfigsResponse>;
                }

                namespace GenerativeQuestionService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.GenerativeQuestionService|updateGenerativeQuestionsFeatureConfig}.
                     * @param error Error, if any
                     * @param [response] GenerativeQuestionsFeatureConfig
                     */
                    type UpdateGenerativeQuestionsFeatureConfigCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.GenerativeQuestionsFeatureConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.GenerativeQuestionService|getGenerativeQuestionsFeatureConfig}.
                     * @param error Error, if any
                     * @param [response] GenerativeQuestionsFeatureConfig
                     */
                    type GetGenerativeQuestionsFeatureConfigCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.GenerativeQuestionsFeatureConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.GenerativeQuestionService|listGenerativeQuestionConfigs}.
                     * @param error Error, if any
                     * @param [response] ListGenerativeQuestionConfigsResponse
                     */
                    type ListGenerativeQuestionConfigsCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.ListGenerativeQuestionConfigsResponse) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.GenerativeQuestionService|updateGenerativeQuestionConfig}.
                     * @param error Error, if any
                     * @param [response] GenerativeQuestionConfig
                     */
                    type UpdateGenerativeQuestionConfigCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.GenerativeQuestionConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.GenerativeQuestionService|batchUpdateGenerativeQuestionConfigs}.
                     * @param error Error, if any
                     * @param [response] BatchUpdateGenerativeQuestionConfigsResponse
                     */
                    type BatchUpdateGenerativeQuestionConfigsCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.BatchUpdateGenerativeQuestionConfigsResponse) => void;
                }

                /** Properties of an UpdateGenerativeQuestionsFeatureConfigRequest. */
                interface IUpdateGenerativeQuestionsFeatureConfigRequest {

                    /** UpdateGenerativeQuestionsFeatureConfigRequest generativeQuestionsFeatureConfig */
                    generativeQuestionsFeatureConfig?: (google.cloud.retail.v2alpha.IGenerativeQuestionsFeatureConfig|null);

                    /** UpdateGenerativeQuestionsFeatureConfigRequest updateMask */
                    updateMask?: (google.protobuf.IFieldMask|null);
                }

                /** Represents an UpdateGenerativeQuestionsFeatureConfigRequest. */
                class UpdateGenerativeQuestionsFeatureConfigRequest implements IUpdateGenerativeQuestionsFeatureConfigRequest {

                    /**
                     * Constructs a new UpdateGenerativeQuestionsFeatureConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IUpdateGenerativeQuestionsFeatureConfigRequest);

                    /** UpdateGenerativeQuestionsFeatureConfigRequest generativeQuestionsFeatureConfig. */
                    public generativeQuestionsFeatureConfig?: (google.cloud.retail.v2alpha.IGenerativeQuestionsFeatureConfig|null);

                    /** UpdateGenerativeQuestionsFeatureConfigRequest updateMask. */
                    public updateMask?: (google.protobuf.IFieldMask|null);

                    /**
                     * Creates a new UpdateGenerativeQuestionsFeatureConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateGenerativeQuestionsFeatureConfigRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IUpdateGenerativeQuestionsFeatureConfigRequest): google.cloud.retail.v2alpha.UpdateGenerativeQuestionsFeatureConfigRequest;

                    /**
                     * Encodes the specified UpdateGenerativeQuestionsFeatureConfigRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.UpdateGenerativeQuestionsFeatureConfigRequest.verify|verify} messages.
                     * @param message UpdateGenerativeQuestionsFeatureConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IUpdateGenerativeQuestionsFeatureConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateGenerativeQuestionsFeatureConfigRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.UpdateGenerativeQuestionsFeatureConfigRequest.verify|verify} messages.
                     * @param message UpdateGenerativeQuestionsFeatureConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IUpdateGenerativeQuestionsFeatureConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateGenerativeQuestionsFeatureConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateGenerativeQuestionsFeatureConfigRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.UpdateGenerativeQuestionsFeatureConfigRequest;

                    /**
                     * Decodes an UpdateGenerativeQuestionsFeatureConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateGenerativeQuestionsFeatureConfigRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.UpdateGenerativeQuestionsFeatureConfigRequest;

                    /**
                     * Verifies an UpdateGenerativeQuestionsFeatureConfigRequest message.
                     * @param message Plain 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 UpdateGenerativeQuestionsFeatureConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateGenerativeQuestionsFeatureConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.UpdateGenerativeQuestionsFeatureConfigRequest;

                    /**
                     * Creates a plain object from an UpdateGenerativeQuestionsFeatureConfigRequest message. Also converts values to other types if specified.
                     * @param message UpdateGenerativeQuestionsFeatureConfigRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.UpdateGenerativeQuestionsFeatureConfigRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateGenerativeQuestionsFeatureConfigRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateGenerativeQuestionsFeatureConfigRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetGenerativeQuestionsFeatureConfigRequest. */
                interface IGetGenerativeQuestionsFeatureConfigRequest {

                    /** GetGenerativeQuestionsFeatureConfigRequest catalog */
                    catalog?: (string|null);
                }

                /** Represents a GetGenerativeQuestionsFeatureConfigRequest. */
                class GetGenerativeQuestionsFeatureConfigRequest implements IGetGenerativeQuestionsFeatureConfigRequest {

                    /**
                     * Constructs a new GetGenerativeQuestionsFeatureConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IGetGenerativeQuestionsFeatureConfigRequest);

                    /** GetGenerativeQuestionsFeatureConfigRequest catalog. */
                    public catalog: string;

                    /**
                     * Creates a new GetGenerativeQuestionsFeatureConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetGenerativeQuestionsFeatureConfigRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IGetGenerativeQuestionsFeatureConfigRequest): google.cloud.retail.v2alpha.GetGenerativeQuestionsFeatureConfigRequest;

                    /**
                     * Encodes the specified GetGenerativeQuestionsFeatureConfigRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.GetGenerativeQuestionsFeatureConfigRequest.verify|verify} messages.
                     * @param message GetGenerativeQuestionsFeatureConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IGetGenerativeQuestionsFeatureConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetGenerativeQuestionsFeatureConfigRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.GetGenerativeQuestionsFeatureConfigRequest.verify|verify} messages.
                     * @param message GetGenerativeQuestionsFeatureConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IGetGenerativeQuestionsFeatureConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetGenerativeQuestionsFeatureConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetGenerativeQuestionsFeatureConfigRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.GetGenerativeQuestionsFeatureConfigRequest;

                    /**
                     * Decodes a GetGenerativeQuestionsFeatureConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetGenerativeQuestionsFeatureConfigRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.GetGenerativeQuestionsFeatureConfigRequest;

                    /**
                     * Verifies a GetGenerativeQuestionsFeatureConfigRequest message.
                     * @param message Plain 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 GetGenerativeQuestionsFeatureConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetGenerativeQuestionsFeatureConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.GetGenerativeQuestionsFeatureConfigRequest;

                    /**
                     * Creates a plain object from a GetGenerativeQuestionsFeatureConfigRequest message. Also converts values to other types if specified.
                     * @param message GetGenerativeQuestionsFeatureConfigRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.GetGenerativeQuestionsFeatureConfigRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetGenerativeQuestionsFeatureConfigRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetGenerativeQuestionsFeatureConfigRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListGenerativeQuestionConfigsRequest. */
                interface IListGenerativeQuestionConfigsRequest {

                    /** ListGenerativeQuestionConfigsRequest parent */
                    parent?: (string|null);
                }

                /** Represents a ListGenerativeQuestionConfigsRequest. */
                class ListGenerativeQuestionConfigsRequest implements IListGenerativeQuestionConfigsRequest {

                    /**
                     * Constructs a new ListGenerativeQuestionConfigsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IListGenerativeQuestionConfigsRequest);

                    /** ListGenerativeQuestionConfigsRequest parent. */
                    public parent: string;

                    /**
                     * Creates a new ListGenerativeQuestionConfigsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListGenerativeQuestionConfigsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IListGenerativeQuestionConfigsRequest): google.cloud.retail.v2alpha.ListGenerativeQuestionConfigsRequest;

                    /**
                     * Encodes the specified ListGenerativeQuestionConfigsRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.ListGenerativeQuestionConfigsRequest.verify|verify} messages.
                     * @param message ListGenerativeQuestionConfigsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IListGenerativeQuestionConfigsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListGenerativeQuestionConfigsRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ListGenerativeQuestionConfigsRequest.verify|verify} messages.
                     * @param message ListGenerativeQuestionConfigsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IListGenerativeQuestionConfigsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListGenerativeQuestionConfigsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListGenerativeQuestionConfigsRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ListGenerativeQuestionConfigsRequest;

                    /**
                     * Decodes a ListGenerativeQuestionConfigsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListGenerativeQuestionConfigsRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.ListGenerativeQuestionConfigsRequest;

                    /**
                     * Verifies a ListGenerativeQuestionConfigsRequest message.
                     * @param message Plain 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 ListGenerativeQuestionConfigsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListGenerativeQuestionConfigsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ListGenerativeQuestionConfigsRequest;

                    /**
                     * Creates a plain object from a ListGenerativeQuestionConfigsRequest message. Also converts values to other types if specified.
                     * @param message ListGenerativeQuestionConfigsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ListGenerativeQuestionConfigsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListGenerativeQuestionConfigsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListGenerativeQuestionConfigsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListGenerativeQuestionConfigsResponse. */
                interface IListGenerativeQuestionConfigsResponse {

                    /** ListGenerativeQuestionConfigsResponse generativeQuestionConfigs */
                    generativeQuestionConfigs?: (google.cloud.retail.v2alpha.IGenerativeQuestionConfig[]|null);
                }

                /** Represents a ListGenerativeQuestionConfigsResponse. */
                class ListGenerativeQuestionConfigsResponse implements IListGenerativeQuestionConfigsResponse {

                    /**
                     * Constructs a new ListGenerativeQuestionConfigsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IListGenerativeQuestionConfigsResponse);

                    /** ListGenerativeQuestionConfigsResponse generativeQuestionConfigs. */
                    public generativeQuestionConfigs: google.cloud.retail.v2alpha.IGenerativeQuestionConfig[];

                    /**
                     * Creates a new ListGenerativeQuestionConfigsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListGenerativeQuestionConfigsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IListGenerativeQuestionConfigsResponse): google.cloud.retail.v2alpha.ListGenerativeQuestionConfigsResponse;

                    /**
                     * Encodes the specified ListGenerativeQuestionConfigsResponse message. Does not implicitly {@link google.cloud.retail.v2alpha.ListGenerativeQuestionConfigsResponse.verify|verify} messages.
                     * @param message ListGenerativeQuestionConfigsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IListGenerativeQuestionConfigsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListGenerativeQuestionConfigsResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ListGenerativeQuestionConfigsResponse.verify|verify} messages.
                     * @param message ListGenerativeQuestionConfigsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IListGenerativeQuestionConfigsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListGenerativeQuestionConfigsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListGenerativeQuestionConfigsResponse
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ListGenerativeQuestionConfigsResponse;

                    /**
                     * Decodes a ListGenerativeQuestionConfigsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListGenerativeQuestionConfigsResponse
                     * @throws {Error} If the payload 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.retail.v2alpha.ListGenerativeQuestionConfigsResponse;

                    /**
                     * Verifies a ListGenerativeQuestionConfigsResponse message.
                     * @param message Plain 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 ListGenerativeQuestionConfigsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListGenerativeQuestionConfigsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ListGenerativeQuestionConfigsResponse;

                    /**
                     * Creates a plain object from a ListGenerativeQuestionConfigsResponse message. Also converts values to other types if specified.
                     * @param message ListGenerativeQuestionConfigsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ListGenerativeQuestionConfigsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListGenerativeQuestionConfigsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListGenerativeQuestionConfigsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateGenerativeQuestionConfigRequest. */
                interface IUpdateGenerativeQuestionConfigRequest {

                    /** UpdateGenerativeQuestionConfigRequest generativeQuestionConfig */
                    generativeQuestionConfig?: (google.cloud.retail.v2alpha.IGenerativeQuestionConfig|null);

                    /** UpdateGenerativeQuestionConfigRequest updateMask */
                    updateMask?: (google.protobuf.IFieldMask|null);
                }

                /** Represents an UpdateGenerativeQuestionConfigRequest. */
                class UpdateGenerativeQuestionConfigRequest implements IUpdateGenerativeQuestionConfigRequest {

                    /**
                     * Constructs a new UpdateGenerativeQuestionConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IUpdateGenerativeQuestionConfigRequest);

                    /** UpdateGenerativeQuestionConfigRequest generativeQuestionConfig. */
                    public generativeQuestionConfig?: (google.cloud.retail.v2alpha.IGenerativeQuestionConfig|null);

                    /** UpdateGenerativeQuestionConfigRequest updateMask. */
                    public updateMask?: (google.protobuf.IFieldMask|null);

                    /**
                     * Creates a new UpdateGenerativeQuestionConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateGenerativeQuestionConfigRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IUpdateGenerativeQuestionConfigRequest): google.cloud.retail.v2alpha.UpdateGenerativeQuestionConfigRequest;

                    /**
                     * Encodes the specified UpdateGenerativeQuestionConfigRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.UpdateGenerativeQuestionConfigRequest.verify|verify} messages.
                     * @param message UpdateGenerativeQuestionConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IUpdateGenerativeQuestionConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateGenerativeQuestionConfigRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.UpdateGenerativeQuestionConfigRequest.verify|verify} messages.
                     * @param message UpdateGenerativeQuestionConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IUpdateGenerativeQuestionConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateGenerativeQuestionConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateGenerativeQuestionConfigRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.UpdateGenerativeQuestionConfigRequest;

                    /**
                     * Decodes an UpdateGenerativeQuestionConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateGenerativeQuestionConfigRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.UpdateGenerativeQuestionConfigRequest;

                    /**
                     * Verifies an UpdateGenerativeQuestionConfigRequest message.
                     * @param message Plain 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 UpdateGenerativeQuestionConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateGenerativeQuestionConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.UpdateGenerativeQuestionConfigRequest;

                    /**
                     * Creates a plain object from an UpdateGenerativeQuestionConfigRequest message. Also converts values to other types if specified.
                     * @param message UpdateGenerativeQuestionConfigRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.UpdateGenerativeQuestionConfigRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateGenerativeQuestionConfigRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateGenerativeQuestionConfigRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a BatchUpdateGenerativeQuestionConfigsRequest. */
                interface IBatchUpdateGenerativeQuestionConfigsRequest {

                    /** BatchUpdateGenerativeQuestionConfigsRequest parent */
                    parent?: (string|null);

                    /** BatchUpdateGenerativeQuestionConfigsRequest requests */
                    requests?: (google.cloud.retail.v2alpha.IUpdateGenerativeQuestionConfigRequest[]|null);
                }

                /** Represents a BatchUpdateGenerativeQuestionConfigsRequest. */
                class BatchUpdateGenerativeQuestionConfigsRequest implements IBatchUpdateGenerativeQuestionConfigsRequest {

                    /**
                     * Constructs a new BatchUpdateGenerativeQuestionConfigsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IBatchUpdateGenerativeQuestionConfigsRequest);

                    /** BatchUpdateGenerativeQuestionConfigsRequest parent. */
                    public parent: string;

                    /** BatchUpdateGenerativeQuestionConfigsRequest requests. */
                    public requests: google.cloud.retail.v2alpha.IUpdateGenerativeQuestionConfigRequest[];

                    /**
                     * Creates a new BatchUpdateGenerativeQuestionConfigsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns BatchUpdateGenerativeQuestionConfigsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IBatchUpdateGenerativeQuestionConfigsRequest): google.cloud.retail.v2alpha.BatchUpdateGenerativeQuestionConfigsRequest;

                    /**
                     * Encodes the specified BatchUpdateGenerativeQuestionConfigsRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.BatchUpdateGenerativeQuestionConfigsRequest.verify|verify} messages.
                     * @param message BatchUpdateGenerativeQuestionConfigsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IBatchUpdateGenerativeQuestionConfigsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified BatchUpdateGenerativeQuestionConfigsRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.BatchUpdateGenerativeQuestionConfigsRequest.verify|verify} messages.
                     * @param message BatchUpdateGenerativeQuestionConfigsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IBatchUpdateGenerativeQuestionConfigsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a BatchUpdateGenerativeQuestionConfigsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns BatchUpdateGenerativeQuestionConfigsRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.BatchUpdateGenerativeQuestionConfigsRequest;

                    /**
                     * Decodes a BatchUpdateGenerativeQuestionConfigsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns BatchUpdateGenerativeQuestionConfigsRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.BatchUpdateGenerativeQuestionConfigsRequest;

                    /**
                     * Verifies a BatchUpdateGenerativeQuestionConfigsRequest message.
                     * @param message Plain 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 BatchUpdateGenerativeQuestionConfigsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns BatchUpdateGenerativeQuestionConfigsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.BatchUpdateGenerativeQuestionConfigsRequest;

                    /**
                     * Creates a plain object from a BatchUpdateGenerativeQuestionConfigsRequest message. Also converts values to other types if specified.
                     * @param message BatchUpdateGenerativeQuestionConfigsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.BatchUpdateGenerativeQuestionConfigsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this BatchUpdateGenerativeQuestionConfigsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for BatchUpdateGenerativeQuestionConfigsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a BatchUpdateGenerativeQuestionConfigsResponse. */
                interface IBatchUpdateGenerativeQuestionConfigsResponse {

                    /** BatchUpdateGenerativeQuestionConfigsResponse generativeQuestionConfigs */
                    generativeQuestionConfigs?: (google.cloud.retail.v2alpha.IGenerativeQuestionConfig[]|null);
                }

                /** Represents a BatchUpdateGenerativeQuestionConfigsResponse. */
                class BatchUpdateGenerativeQuestionConfigsResponse implements IBatchUpdateGenerativeQuestionConfigsResponse {

                    /**
                     * Constructs a new BatchUpdateGenerativeQuestionConfigsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IBatchUpdateGenerativeQuestionConfigsResponse);

                    /** BatchUpdateGenerativeQuestionConfigsResponse generativeQuestionConfigs. */
                    public generativeQuestionConfigs: google.cloud.retail.v2alpha.IGenerativeQuestionConfig[];

                    /**
                     * Creates a new BatchUpdateGenerativeQuestionConfigsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns BatchUpdateGenerativeQuestionConfigsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IBatchUpdateGenerativeQuestionConfigsResponse): google.cloud.retail.v2alpha.BatchUpdateGenerativeQuestionConfigsResponse;

                    /**
                     * Encodes the specified BatchUpdateGenerativeQuestionConfigsResponse message. Does not implicitly {@link google.cloud.retail.v2alpha.BatchUpdateGenerativeQuestionConfigsResponse.verify|verify} messages.
                     * @param message BatchUpdateGenerativeQuestionConfigsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IBatchUpdateGenerativeQuestionConfigsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified BatchUpdateGenerativeQuestionConfigsResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.BatchUpdateGenerativeQuestionConfigsResponse.verify|verify} messages.
                     * @param message BatchUpdateGenerativeQuestionConfigsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IBatchUpdateGenerativeQuestionConfigsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a BatchUpdateGenerativeQuestionConfigsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns BatchUpdateGenerativeQuestionConfigsResponse
                     * @throws {Error} If the payload is not 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.retail.v2alpha.BatchUpdateGenerativeQuestionConfigsResponse;

                    /**
                     * Decodes a BatchUpdateGenerativeQuestionConfigsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns BatchUpdateGenerativeQuestionConfigsResponse
                     * @throws {Error} If the payload 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.retail.v2alpha.BatchUpdateGenerativeQuestionConfigsResponse;

                    /**
                     * Verifies a BatchUpdateGenerativeQuestionConfigsResponse message.
                     * @param message Plain 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 BatchUpdateGenerativeQuestionConfigsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns BatchUpdateGenerativeQuestionConfigsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.BatchUpdateGenerativeQuestionConfigsResponse;

                    /**
                     * Creates a plain object from a BatchUpdateGenerativeQuestionConfigsResponse message. Also converts values to other types if specified.
                     * @param message BatchUpdateGenerativeQuestionConfigsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.BatchUpdateGenerativeQuestionConfigsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this BatchUpdateGenerativeQuestionConfigsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for BatchUpdateGenerativeQuestionConfigsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a MerchantCenterAccountLink. */
                interface IMerchantCenterAccountLink {

                    /** MerchantCenterAccountLink name */
                    name?: (string|null);

                    /** MerchantCenterAccountLink id */
                    id?: (string|null);

                    /** MerchantCenterAccountLink merchantCenterAccountId */
                    merchantCenterAccountId?: (number|Long|string|null);

                    /** MerchantCenterAccountLink branchId */
                    branchId?: (string|null);

                    /** MerchantCenterAccountLink feedLabel */
                    feedLabel?: (string|null);

                    /** MerchantCenterAccountLink languageCode */
                    languageCode?: (string|null);

                    /** MerchantCenterAccountLink feedFilters */
                    feedFilters?: (google.cloud.retail.v2alpha.MerchantCenterAccountLink.IMerchantCenterFeedFilter[]|null);

                    /** MerchantCenterAccountLink state */
                    state?: (google.cloud.retail.v2alpha.MerchantCenterAccountLink.State|keyof typeof google.cloud.retail.v2alpha.MerchantCenterAccountLink.State|null);

                    /** MerchantCenterAccountLink projectId */
                    projectId?: (string|null);

                    /** MerchantCenterAccountLink source */
                    source?: (string|null);
                }

                /** Represents a MerchantCenterAccountLink. */
                class MerchantCenterAccountLink implements IMerchantCenterAccountLink {

                    /**
                     * Constructs a new MerchantCenterAccountLink.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IMerchantCenterAccountLink);

                    /** MerchantCenterAccountLink name. */
                    public name: string;

                    /** MerchantCenterAccountLink id. */
                    public id: string;

                    /** MerchantCenterAccountLink merchantCenterAccountId. */
                    public merchantCenterAccountId: (number|Long|string);

                    /** MerchantCenterAccountLink branchId. */
                    public branchId: string;

                    /** MerchantCenterAccountLink feedLabel. */
                    public feedLabel: string;

                    /** MerchantCenterAccountLink languageCode. */
                    public languageCode: string;

                    /** MerchantCenterAccountLink feedFilters. */
                    public feedFilters: google.cloud.retail.v2alpha.MerchantCenterAccountLink.IMerchantCenterFeedFilter[];

                    /** MerchantCenterAccountLink state. */
                    public state: (google.cloud.retail.v2alpha.MerchantCenterAccountLink.State|keyof typeof google.cloud.retail.v2alpha.MerchantCenterAccountLink.State);

                    /** MerchantCenterAccountLink projectId. */
                    public projectId: string;

                    /** MerchantCenterAccountLink source. */
                    public source: string;

                    /**
                     * Creates a new MerchantCenterAccountLink instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns MerchantCenterAccountLink instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IMerchantCenterAccountLink): google.cloud.retail.v2alpha.MerchantCenterAccountLink;

                    /**
                     * Encodes the specified MerchantCenterAccountLink message. Does not implicitly {@link google.cloud.retail.v2alpha.MerchantCenterAccountLink.verify|verify} messages.
                     * @param message MerchantCenterAccountLink message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IMerchantCenterAccountLink, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified MerchantCenterAccountLink message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.MerchantCenterAccountLink.verify|verify} messages.
                     * @param message MerchantCenterAccountLink message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IMerchantCenterAccountLink, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a MerchantCenterAccountLink message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns MerchantCenterAccountLink
                     * @throws {Error} If the payload is not 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.retail.v2alpha.MerchantCenterAccountLink;

                    /**
                     * Decodes a MerchantCenterAccountLink message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns MerchantCenterAccountLink
                     * @throws {Error} If the payload 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.retail.v2alpha.MerchantCenterAccountLink;

                    /**
                     * Verifies a MerchantCenterAccountLink message.
                     * @param message Plain 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 MerchantCenterAccountLink message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns MerchantCenterAccountLink
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.MerchantCenterAccountLink;

                    /**
                     * Creates a plain object from a MerchantCenterAccountLink message. Also converts values to other types if specified.
                     * @param message MerchantCenterAccountLink
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.MerchantCenterAccountLink, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this MerchantCenterAccountLink to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for MerchantCenterAccountLink
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace MerchantCenterAccountLink {

                    /** Properties of a MerchantCenterFeedFilter. */
                    interface IMerchantCenterFeedFilter {

                        /** MerchantCenterFeedFilter primaryFeedId */
                        primaryFeedId?: (number|Long|string|null);

                        /** MerchantCenterFeedFilter dataSourceId */
                        dataSourceId?: (number|Long|string|null);

                        /** MerchantCenterFeedFilter primaryFeedName */
                        primaryFeedName?: (string|null);
                    }

                    /** Represents a MerchantCenterFeedFilter. */
                    class MerchantCenterFeedFilter implements IMerchantCenterFeedFilter {

                        /**
                         * Constructs a new MerchantCenterFeedFilter.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.MerchantCenterAccountLink.IMerchantCenterFeedFilter);

                        /** MerchantCenterFeedFilter primaryFeedId. */
                        public primaryFeedId: (number|Long|string);

                        /** MerchantCenterFeedFilter dataSourceId. */
                        public dataSourceId: (number|Long|string);

                        /** MerchantCenterFeedFilter primaryFeedName. */
                        public primaryFeedName: string;

                        /**
                         * Creates a new MerchantCenterFeedFilter instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MerchantCenterFeedFilter instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.MerchantCenterAccountLink.IMerchantCenterFeedFilter): google.cloud.retail.v2alpha.MerchantCenterAccountLink.MerchantCenterFeedFilter;

                        /**
                         * Encodes the specified MerchantCenterFeedFilter message. Does not implicitly {@link google.cloud.retail.v2alpha.MerchantCenterAccountLink.MerchantCenterFeedFilter.verify|verify} messages.
                         * @param message MerchantCenterFeedFilter message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.MerchantCenterAccountLink.IMerchantCenterFeedFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MerchantCenterFeedFilter message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.MerchantCenterAccountLink.MerchantCenterFeedFilter.verify|verify} messages.
                         * @param message MerchantCenterFeedFilter message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.MerchantCenterAccountLink.IMerchantCenterFeedFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MerchantCenterFeedFilter message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MerchantCenterFeedFilter
                         * @throws {Error} If the payload is not 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.retail.v2alpha.MerchantCenterAccountLink.MerchantCenterFeedFilter;

                        /**
                         * Decodes a MerchantCenterFeedFilter message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MerchantCenterFeedFilter
                         * @throws {Error} If the payload 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.retail.v2alpha.MerchantCenterAccountLink.MerchantCenterFeedFilter;

                        /**
                         * Verifies a MerchantCenterFeedFilter message.
                         * @param message Plain 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 MerchantCenterFeedFilter message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MerchantCenterFeedFilter
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.MerchantCenterAccountLink.MerchantCenterFeedFilter;

                        /**
                         * Creates a plain object from a MerchantCenterFeedFilter message. Also converts values to other types if specified.
                         * @param message MerchantCenterFeedFilter
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.MerchantCenterAccountLink.MerchantCenterFeedFilter, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MerchantCenterFeedFilter to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MerchantCenterFeedFilter
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** State enum. */
                    enum State {
                        STATE_UNSPECIFIED = 0,
                        PENDING = 1,
                        ACTIVE = 2,
                        FAILED = 3
                    }
                }

                /** Properties of a CreateMerchantCenterAccountLinkMetadata. */
                interface ICreateMerchantCenterAccountLinkMetadata {

                    /** CreateMerchantCenterAccountLinkMetadata createTime */
                    createTime?: (google.protobuf.ITimestamp|null);

                    /** CreateMerchantCenterAccountLinkMetadata updateTime */
                    updateTime?: (google.protobuf.ITimestamp|null);
                }

                /** Represents a CreateMerchantCenterAccountLinkMetadata. */
                class CreateMerchantCenterAccountLinkMetadata implements ICreateMerchantCenterAccountLinkMetadata {

                    /**
                     * Constructs a new CreateMerchantCenterAccountLinkMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.ICreateMerchantCenterAccountLinkMetadata);

                    /** CreateMerchantCenterAccountLinkMetadata createTime. */
                    public createTime?: (google.protobuf.ITimestamp|null);

                    /** CreateMerchantCenterAccountLinkMetadata updateTime. */
                    public updateTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * Creates a new CreateMerchantCenterAccountLinkMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CreateMerchantCenterAccountLinkMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.ICreateMerchantCenterAccountLinkMetadata): google.cloud.retail.v2alpha.CreateMerchantCenterAccountLinkMetadata;

                    /**
                     * Encodes the specified CreateMerchantCenterAccountLinkMetadata message. Does not implicitly {@link google.cloud.retail.v2alpha.CreateMerchantCenterAccountLinkMetadata.verify|verify} messages.
                     * @param message CreateMerchantCenterAccountLinkMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.ICreateMerchantCenterAccountLinkMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CreateMerchantCenterAccountLinkMetadata message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.CreateMerchantCenterAccountLinkMetadata.verify|verify} messages.
                     * @param message CreateMerchantCenterAccountLinkMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.ICreateMerchantCenterAccountLinkMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CreateMerchantCenterAccountLinkMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CreateMerchantCenterAccountLinkMetadata
                     * @throws {Error} If the payload is not 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.retail.v2alpha.CreateMerchantCenterAccountLinkMetadata;

                    /**
                     * Decodes a CreateMerchantCenterAccountLinkMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CreateMerchantCenterAccountLinkMetadata
                     * @throws {Error} If the payload 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.retail.v2alpha.CreateMerchantCenterAccountLinkMetadata;

                    /**
                     * Verifies a CreateMerchantCenterAccountLinkMetadata message.
                     * @param message Plain 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 CreateMerchantCenterAccountLinkMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CreateMerchantCenterAccountLinkMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.CreateMerchantCenterAccountLinkMetadata;

                    /**
                     * Creates a plain object from a CreateMerchantCenterAccountLinkMetadata message. Also converts values to other types if specified.
                     * @param message CreateMerchantCenterAccountLinkMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.CreateMerchantCenterAccountLinkMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CreateMerchantCenterAccountLinkMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CreateMerchantCenterAccountLinkMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Represents a MerchantCenterAccountLinkService */
                class MerchantCenterAccountLinkService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new MerchantCenterAccountLinkService 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 MerchantCenterAccountLinkService 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): MerchantCenterAccountLinkService;

                    /**
                     * Calls ListMerchantCenterAccountLinks.
                     * @param request ListMerchantCenterAccountLinksRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListMerchantCenterAccountLinksResponse
                     */
                    public listMerchantCenterAccountLinks(request: google.cloud.retail.v2alpha.IListMerchantCenterAccountLinksRequest, callback: google.cloud.retail.v2alpha.MerchantCenterAccountLinkService.ListMerchantCenterAccountLinksCallback): void;

                    /**
                     * Calls ListMerchantCenterAccountLinks.
                     * @param request ListMerchantCenterAccountLinksRequest message or plain object
                     * @returns Promise
                     */
                    public listMerchantCenterAccountLinks(request: google.cloud.retail.v2alpha.IListMerchantCenterAccountLinksRequest): Promise<google.cloud.retail.v2alpha.ListMerchantCenterAccountLinksResponse>;

                    /**
                     * Calls CreateMerchantCenterAccountLink.
                     * @param request CreateMerchantCenterAccountLinkRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public createMerchantCenterAccountLink(request: google.cloud.retail.v2alpha.ICreateMerchantCenterAccountLinkRequest, callback: google.cloud.retail.v2alpha.MerchantCenterAccountLinkService.CreateMerchantCenterAccountLinkCallback): void;

                    /**
                     * Calls CreateMerchantCenterAccountLink.
                     * @param request CreateMerchantCenterAccountLinkRequest message or plain object
                     * @returns Promise
                     */
                    public createMerchantCenterAccountLink(request: google.cloud.retail.v2alpha.ICreateMerchantCenterAccountLinkRequest): Promise<google.longrunning.Operation>;

                    /**
                     * Calls DeleteMerchantCenterAccountLink.
                     * @param request DeleteMerchantCenterAccountLinkRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Empty
                     */
                    public deleteMerchantCenterAccountLink(request: google.cloud.retail.v2alpha.IDeleteMerchantCenterAccountLinkRequest, callback: google.cloud.retail.v2alpha.MerchantCenterAccountLinkService.DeleteMerchantCenterAccountLinkCallback): void;

                    /**
                     * Calls DeleteMerchantCenterAccountLink.
                     * @param request DeleteMerchantCenterAccountLinkRequest message or plain object
                     * @returns Promise
                     */
                    public deleteMerchantCenterAccountLink(request: google.cloud.retail.v2alpha.IDeleteMerchantCenterAccountLinkRequest): Promise<google.protobuf.Empty>;
                }

                namespace MerchantCenterAccountLinkService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.MerchantCenterAccountLinkService|listMerchantCenterAccountLinks}.
                     * @param error Error, if any
                     * @param [response] ListMerchantCenterAccountLinksResponse
                     */
                    type ListMerchantCenterAccountLinksCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.ListMerchantCenterAccountLinksResponse) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.MerchantCenterAccountLinkService|createMerchantCenterAccountLink}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type CreateMerchantCenterAccountLinkCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.MerchantCenterAccountLinkService|deleteMerchantCenterAccountLink}.
                     * @param error Error, if any
                     * @param [response] Empty
                     */
                    type DeleteMerchantCenterAccountLinkCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;
                }

                /** Properties of a ListMerchantCenterAccountLinksRequest. */
                interface IListMerchantCenterAccountLinksRequest {

                    /** ListMerchantCenterAccountLinksRequest parent */
                    parent?: (string|null);
                }

                /** Represents a ListMerchantCenterAccountLinksRequest. */
                class ListMerchantCenterAccountLinksRequest implements IListMerchantCenterAccountLinksRequest {

                    /**
                     * Constructs a new ListMerchantCenterAccountLinksRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IListMerchantCenterAccountLinksRequest);

                    /** ListMerchantCenterAccountLinksRequest parent. */
                    public parent: string;

                    /**
                     * Creates a new ListMerchantCenterAccountLinksRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListMerchantCenterAccountLinksRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IListMerchantCenterAccountLinksRequest): google.cloud.retail.v2alpha.ListMerchantCenterAccountLinksRequest;

                    /**
                     * Encodes the specified ListMerchantCenterAccountLinksRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.ListMerchantCenterAccountLinksRequest.verify|verify} messages.
                     * @param message ListMerchantCenterAccountLinksRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IListMerchantCenterAccountLinksRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListMerchantCenterAccountLinksRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ListMerchantCenterAccountLinksRequest.verify|verify} messages.
                     * @param message ListMerchantCenterAccountLinksRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IListMerchantCenterAccountLinksRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListMerchantCenterAccountLinksRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListMerchantCenterAccountLinksRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ListMerchantCenterAccountLinksRequest;

                    /**
                     * Decodes a ListMerchantCenterAccountLinksRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListMerchantCenterAccountLinksRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.ListMerchantCenterAccountLinksRequest;

                    /**
                     * Verifies a ListMerchantCenterAccountLinksRequest message.
                     * @param message Plain 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 ListMerchantCenterAccountLinksRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListMerchantCenterAccountLinksRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ListMerchantCenterAccountLinksRequest;

                    /**
                     * Creates a plain object from a ListMerchantCenterAccountLinksRequest message. Also converts values to other types if specified.
                     * @param message ListMerchantCenterAccountLinksRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ListMerchantCenterAccountLinksRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListMerchantCenterAccountLinksRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListMerchantCenterAccountLinksRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListMerchantCenterAccountLinksResponse. */
                interface IListMerchantCenterAccountLinksResponse {

                    /** ListMerchantCenterAccountLinksResponse merchantCenterAccountLinks */
                    merchantCenterAccountLinks?: (google.cloud.retail.v2alpha.IMerchantCenterAccountLink[]|null);
                }

                /** Represents a ListMerchantCenterAccountLinksResponse. */
                class ListMerchantCenterAccountLinksResponse implements IListMerchantCenterAccountLinksResponse {

                    /**
                     * Constructs a new ListMerchantCenterAccountLinksResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IListMerchantCenterAccountLinksResponse);

                    /** ListMerchantCenterAccountLinksResponse merchantCenterAccountLinks. */
                    public merchantCenterAccountLinks: google.cloud.retail.v2alpha.IMerchantCenterAccountLink[];

                    /**
                     * Creates a new ListMerchantCenterAccountLinksResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListMerchantCenterAccountLinksResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IListMerchantCenterAccountLinksResponse): google.cloud.retail.v2alpha.ListMerchantCenterAccountLinksResponse;

                    /**
                     * Encodes the specified ListMerchantCenterAccountLinksResponse message. Does not implicitly {@link google.cloud.retail.v2alpha.ListMerchantCenterAccountLinksResponse.verify|verify} messages.
                     * @param message ListMerchantCenterAccountLinksResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IListMerchantCenterAccountLinksResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListMerchantCenterAccountLinksResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ListMerchantCenterAccountLinksResponse.verify|verify} messages.
                     * @param message ListMerchantCenterAccountLinksResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IListMerchantCenterAccountLinksResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListMerchantCenterAccountLinksResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListMerchantCenterAccountLinksResponse
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ListMerchantCenterAccountLinksResponse;

                    /**
                     * Decodes a ListMerchantCenterAccountLinksResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListMerchantCenterAccountLinksResponse
                     * @throws {Error} If the payload 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.retail.v2alpha.ListMerchantCenterAccountLinksResponse;

                    /**
                     * Verifies a ListMerchantCenterAccountLinksResponse message.
                     * @param message Plain 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 ListMerchantCenterAccountLinksResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListMerchantCenterAccountLinksResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ListMerchantCenterAccountLinksResponse;

                    /**
                     * Creates a plain object from a ListMerchantCenterAccountLinksResponse message. Also converts values to other types if specified.
                     * @param message ListMerchantCenterAccountLinksResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ListMerchantCenterAccountLinksResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListMerchantCenterAccountLinksResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListMerchantCenterAccountLinksResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CreateMerchantCenterAccountLinkRequest. */
                interface ICreateMerchantCenterAccountLinkRequest {

                    /** CreateMerchantCenterAccountLinkRequest parent */
                    parent?: (string|null);

                    /** CreateMerchantCenterAccountLinkRequest merchantCenterAccountLink */
                    merchantCenterAccountLink?: (google.cloud.retail.v2alpha.IMerchantCenterAccountLink|null);
                }

                /** Represents a CreateMerchantCenterAccountLinkRequest. */
                class CreateMerchantCenterAccountLinkRequest implements ICreateMerchantCenterAccountLinkRequest {

                    /**
                     * Constructs a new CreateMerchantCenterAccountLinkRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.ICreateMerchantCenterAccountLinkRequest);

                    /** CreateMerchantCenterAccountLinkRequest parent. */
                    public parent: string;

                    /** CreateMerchantCenterAccountLinkRequest merchantCenterAccountLink. */
                    public merchantCenterAccountLink?: (google.cloud.retail.v2alpha.IMerchantCenterAccountLink|null);

                    /**
                     * Creates a new CreateMerchantCenterAccountLinkRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CreateMerchantCenterAccountLinkRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.ICreateMerchantCenterAccountLinkRequest): google.cloud.retail.v2alpha.CreateMerchantCenterAccountLinkRequest;

                    /**
                     * Encodes the specified CreateMerchantCenterAccountLinkRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.CreateMerchantCenterAccountLinkRequest.verify|verify} messages.
                     * @param message CreateMerchantCenterAccountLinkRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.ICreateMerchantCenterAccountLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CreateMerchantCenterAccountLinkRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.CreateMerchantCenterAccountLinkRequest.verify|verify} messages.
                     * @param message CreateMerchantCenterAccountLinkRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.ICreateMerchantCenterAccountLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CreateMerchantCenterAccountLinkRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CreateMerchantCenterAccountLinkRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.CreateMerchantCenterAccountLinkRequest;

                    /**
                     * Decodes a CreateMerchantCenterAccountLinkRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CreateMerchantCenterAccountLinkRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.CreateMerchantCenterAccountLinkRequest;

                    /**
                     * Verifies a CreateMerchantCenterAccountLinkRequest message.
                     * @param message Plain 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 CreateMerchantCenterAccountLinkRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CreateMerchantCenterAccountLinkRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.CreateMerchantCenterAccountLinkRequest;

                    /**
                     * Creates a plain object from a CreateMerchantCenterAccountLinkRequest message. Also converts values to other types if specified.
                     * @param message CreateMerchantCenterAccountLinkRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.CreateMerchantCenterAccountLinkRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CreateMerchantCenterAccountLinkRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CreateMerchantCenterAccountLinkRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeleteMerchantCenterAccountLinkRequest. */
                interface IDeleteMerchantCenterAccountLinkRequest {

                    /** DeleteMerchantCenterAccountLinkRequest name */
                    name?: (string|null);
                }

                /** Represents a DeleteMerchantCenterAccountLinkRequest. */
                class DeleteMerchantCenterAccountLinkRequest implements IDeleteMerchantCenterAccountLinkRequest {

                    /**
                     * Constructs a new DeleteMerchantCenterAccountLinkRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IDeleteMerchantCenterAccountLinkRequest);

                    /** DeleteMerchantCenterAccountLinkRequest name. */
                    public name: string;

                    /**
                     * Creates a new DeleteMerchantCenterAccountLinkRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeleteMerchantCenterAccountLinkRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IDeleteMerchantCenterAccountLinkRequest): google.cloud.retail.v2alpha.DeleteMerchantCenterAccountLinkRequest;

                    /**
                     * Encodes the specified DeleteMerchantCenterAccountLinkRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.DeleteMerchantCenterAccountLinkRequest.verify|verify} messages.
                     * @param message DeleteMerchantCenterAccountLinkRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IDeleteMerchantCenterAccountLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeleteMerchantCenterAccountLinkRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.DeleteMerchantCenterAccountLinkRequest.verify|verify} messages.
                     * @param message DeleteMerchantCenterAccountLinkRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IDeleteMerchantCenterAccountLinkRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeleteMerchantCenterAccountLinkRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeleteMerchantCenterAccountLinkRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.DeleteMerchantCenterAccountLinkRequest;

                    /**
                     * Decodes a DeleteMerchantCenterAccountLinkRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeleteMerchantCenterAccountLinkRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.DeleteMerchantCenterAccountLinkRequest;

                    /**
                     * Verifies a DeleteMerchantCenterAccountLinkRequest message.
                     * @param message Plain 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 DeleteMerchantCenterAccountLinkRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeleteMerchantCenterAccountLinkRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.DeleteMerchantCenterAccountLinkRequest;

                    /**
                     * Creates a plain object from a DeleteMerchantCenterAccountLinkRequest message. Also converts values to other types if specified.
                     * @param message DeleteMerchantCenterAccountLinkRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.DeleteMerchantCenterAccountLinkRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeleteMerchantCenterAccountLinkRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeleteMerchantCenterAccountLinkRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a Model. */
                interface IModel {

                    /** Model pageOptimizationConfig */
                    pageOptimizationConfig?: (google.cloud.retail.v2alpha.Model.IPageOptimizationConfig|null);

                    /** Model name */
                    name?: (string|null);

                    /** Model displayName */
                    displayName?: (string|null);

                    /** Model trainingState */
                    trainingState?: (google.cloud.retail.v2alpha.Model.TrainingState|keyof typeof google.cloud.retail.v2alpha.Model.TrainingState|null);

                    /** Model servingState */
                    servingState?: (google.cloud.retail.v2alpha.Model.ServingState|keyof typeof google.cloud.retail.v2alpha.Model.ServingState|null);

                    /** Model createTime */
                    createTime?: (google.protobuf.ITimestamp|null);

                    /** Model updateTime */
                    updateTime?: (google.protobuf.ITimestamp|null);

                    /** Model type */
                    type?: (string|null);

                    /** Model optimizationObjective */
                    optimizationObjective?: (string|null);

                    /** Model periodicTuningState */
                    periodicTuningState?: (google.cloud.retail.v2alpha.Model.PeriodicTuningState|keyof typeof google.cloud.retail.v2alpha.Model.PeriodicTuningState|null);

                    /** Model lastTuneTime */
                    lastTuneTime?: (google.protobuf.ITimestamp|null);

                    /** Model tuningOperation */
                    tuningOperation?: (string|null);

                    /** Model dataState */
                    dataState?: (google.cloud.retail.v2alpha.Model.DataState|keyof typeof google.cloud.retail.v2alpha.Model.DataState|null);

                    /** Model filteringOption */
                    filteringOption?: (google.cloud.retail.v2alpha.RecommendationsFilteringOption|keyof typeof google.cloud.retail.v2alpha.RecommendationsFilteringOption|null);

                    /** Model servingConfigLists */
                    servingConfigLists?: (google.cloud.retail.v2alpha.Model.IServingConfigList[]|null);

                    /** Model modelFeaturesConfig */
                    modelFeaturesConfig?: (google.cloud.retail.v2alpha.Model.IModelFeaturesConfig|null);
                }

                /** Represents a Model. */
                class Model implements IModel {

                    /**
                     * Constructs a new Model.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IModel);

                    /** Model pageOptimizationConfig. */
                    public pageOptimizationConfig?: (google.cloud.retail.v2alpha.Model.IPageOptimizationConfig|null);

                    /** Model name. */
                    public name: string;

                    /** Model displayName. */
                    public displayName: string;

                    /** Model trainingState. */
                    public trainingState: (google.cloud.retail.v2alpha.Model.TrainingState|keyof typeof google.cloud.retail.v2alpha.Model.TrainingState);

                    /** Model servingState. */
                    public servingState: (google.cloud.retail.v2alpha.Model.ServingState|keyof typeof google.cloud.retail.v2alpha.Model.ServingState);

                    /** Model createTime. */
                    public createTime?: (google.protobuf.ITimestamp|null);

                    /** Model updateTime. */
                    public updateTime?: (google.protobuf.ITimestamp|null);

                    /** Model type. */
                    public type: string;

                    /** Model optimizationObjective. */
                    public optimizationObjective: string;

                    /** Model periodicTuningState. */
                    public periodicTuningState: (google.cloud.retail.v2alpha.Model.PeriodicTuningState|keyof typeof google.cloud.retail.v2alpha.Model.PeriodicTuningState);

                    /** Model lastTuneTime. */
                    public lastTuneTime?: (google.protobuf.ITimestamp|null);

                    /** Model tuningOperation. */
                    public tuningOperation: string;

                    /** Model dataState. */
                    public dataState: (google.cloud.retail.v2alpha.Model.DataState|keyof typeof google.cloud.retail.v2alpha.Model.DataState);

                    /** Model filteringOption. */
                    public filteringOption: (google.cloud.retail.v2alpha.RecommendationsFilteringOption|keyof typeof google.cloud.retail.v2alpha.RecommendationsFilteringOption);

                    /** Model servingConfigLists. */
                    public servingConfigLists: google.cloud.retail.v2alpha.Model.IServingConfigList[];

                    /** Model modelFeaturesConfig. */
                    public modelFeaturesConfig?: (google.cloud.retail.v2alpha.Model.IModelFeaturesConfig|null);

                    /** Model trainingConfig. */
                    public trainingConfig?: "pageOptimizationConfig";

                    /**
                     * Creates a new Model instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Model instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IModel): google.cloud.retail.v2alpha.Model;

                    /**
                     * Encodes the specified Model message. Does not implicitly {@link google.cloud.retail.v2alpha.Model.verify|verify} messages.
                     * @param message Model message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IModel, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Model message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.Model.verify|verify} messages.
                     * @param message Model message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IModel, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Model message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Model
                     * @throws {Error} If the payload is not 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.retail.v2alpha.Model;

                    /**
                     * Decodes a Model message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Model
                     * @throws {Error} If the payload 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.retail.v2alpha.Model;

                    /**
                     * Verifies a Model message.
                     * @param message Plain 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 Model message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Model
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.Model;

                    /**
                     * Creates a plain object from a Model message. Also converts values to other types if specified.
                     * @param message Model
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.Model, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Model to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Model
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace Model {

                    /** Properties of a PageOptimizationConfig. */
                    interface IPageOptimizationConfig {

                        /** PageOptimizationConfig pageOptimizationEventType */
                        pageOptimizationEventType?: (string|null);

                        /** PageOptimizationConfig panels */
                        panels?: (google.cloud.retail.v2alpha.Model.PageOptimizationConfig.IPanel[]|null);

                        /** PageOptimizationConfig restriction */
                        restriction?: (google.cloud.retail.v2alpha.Model.PageOptimizationConfig.Restriction|keyof typeof google.cloud.retail.v2alpha.Model.PageOptimizationConfig.Restriction|null);
                    }

                    /** Represents a PageOptimizationConfig. */
                    class PageOptimizationConfig implements IPageOptimizationConfig {

                        /**
                         * Constructs a new PageOptimizationConfig.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.Model.IPageOptimizationConfig);

                        /** PageOptimizationConfig pageOptimizationEventType. */
                        public pageOptimizationEventType: string;

                        /** PageOptimizationConfig panels. */
                        public panels: google.cloud.retail.v2alpha.Model.PageOptimizationConfig.IPanel[];

                        /** PageOptimizationConfig restriction. */
                        public restriction: (google.cloud.retail.v2alpha.Model.PageOptimizationConfig.Restriction|keyof typeof google.cloud.retail.v2alpha.Model.PageOptimizationConfig.Restriction);

                        /**
                         * Creates a new PageOptimizationConfig instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PageOptimizationConfig instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.Model.IPageOptimizationConfig): google.cloud.retail.v2alpha.Model.PageOptimizationConfig;

                        /**
                         * Encodes the specified PageOptimizationConfig message. Does not implicitly {@link google.cloud.retail.v2alpha.Model.PageOptimizationConfig.verify|verify} messages.
                         * @param message PageOptimizationConfig message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.Model.IPageOptimizationConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PageOptimizationConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.Model.PageOptimizationConfig.verify|verify} messages.
                         * @param message PageOptimizationConfig message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.Model.IPageOptimizationConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PageOptimizationConfig message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PageOptimizationConfig
                         * @throws {Error} If the payload is not 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.retail.v2alpha.Model.PageOptimizationConfig;

                        /**
                         * Decodes a PageOptimizationConfig message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PageOptimizationConfig
                         * @throws {Error} If the payload 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.retail.v2alpha.Model.PageOptimizationConfig;

                        /**
                         * Verifies a PageOptimizationConfig message.
                         * @param message Plain 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 PageOptimizationConfig message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PageOptimizationConfig
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.Model.PageOptimizationConfig;

                        /**
                         * Creates a plain object from a PageOptimizationConfig message. Also converts values to other types if specified.
                         * @param message PageOptimizationConfig
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.Model.PageOptimizationConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PageOptimizationConfig to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PageOptimizationConfig
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace PageOptimizationConfig {

                        /** Properties of a Candidate. */
                        interface ICandidate {

                            /** Candidate servingConfigId */
                            servingConfigId?: (string|null);
                        }

                        /** Represents a Candidate. */
                        class Candidate implements ICandidate {

                            /**
                             * Constructs a new Candidate.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2alpha.Model.PageOptimizationConfig.ICandidate);

                            /** Candidate servingConfigId. */
                            public servingConfigId?: (string|null);

                            /** Candidate candidate. */
                            public candidate?: "servingConfigId";

                            /**
                             * Creates a new Candidate instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns Candidate instance
                             */
                            public static create(properties?: google.cloud.retail.v2alpha.Model.PageOptimizationConfig.ICandidate): google.cloud.retail.v2alpha.Model.PageOptimizationConfig.Candidate;

                            /**
                             * Encodes the specified Candidate message. Does not implicitly {@link google.cloud.retail.v2alpha.Model.PageOptimizationConfig.Candidate.verify|verify} messages.
                             * @param message Candidate message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.retail.v2alpha.Model.PageOptimizationConfig.ICandidate, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified Candidate message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.Model.PageOptimizationConfig.Candidate.verify|verify} messages.
                             * @param message Candidate message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.retail.v2alpha.Model.PageOptimizationConfig.ICandidate, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a Candidate message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns Candidate
                             * @throws {Error} If the payload is not 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.retail.v2alpha.Model.PageOptimizationConfig.Candidate;

                            /**
                             * Decodes a Candidate message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns Candidate
                             * @throws {Error} If the payload 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.retail.v2alpha.Model.PageOptimizationConfig.Candidate;

                            /**
                             * Verifies a Candidate message.
                             * @param message Plain 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 Candidate message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns Candidate
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.Model.PageOptimizationConfig.Candidate;

                            /**
                             * Creates a plain object from a Candidate message. Also converts values to other types if specified.
                             * @param message Candidate
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.retail.v2alpha.Model.PageOptimizationConfig.Candidate, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this Candidate to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for Candidate
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a Panel. */
                        interface IPanel {

                            /** Panel displayName */
                            displayName?: (string|null);

                            /** Panel candidates */
                            candidates?: (google.cloud.retail.v2alpha.Model.PageOptimizationConfig.ICandidate[]|null);

                            /** Panel defaultCandidate */
                            defaultCandidate?: (google.cloud.retail.v2alpha.Model.PageOptimizationConfig.ICandidate|null);
                        }

                        /** Represents a Panel. */
                        class Panel implements IPanel {

                            /**
                             * Constructs a new Panel.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2alpha.Model.PageOptimizationConfig.IPanel);

                            /** Panel displayName. */
                            public displayName: string;

                            /** Panel candidates. */
                            public candidates: google.cloud.retail.v2alpha.Model.PageOptimizationConfig.ICandidate[];

                            /** Panel defaultCandidate. */
                            public defaultCandidate?: (google.cloud.retail.v2alpha.Model.PageOptimizationConfig.ICandidate|null);

                            /**
                             * Creates a new Panel instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns Panel instance
                             */
                            public static create(properties?: google.cloud.retail.v2alpha.Model.PageOptimizationConfig.IPanel): google.cloud.retail.v2alpha.Model.PageOptimizationConfig.Panel;

                            /**
                             * Encodes the specified Panel message. Does not implicitly {@link google.cloud.retail.v2alpha.Model.PageOptimizationConfig.Panel.verify|verify} messages.
                             * @param message Panel message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.retail.v2alpha.Model.PageOptimizationConfig.IPanel, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified Panel message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.Model.PageOptimizationConfig.Panel.verify|verify} messages.
                             * @param message Panel message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.retail.v2alpha.Model.PageOptimizationConfig.IPanel, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a Panel message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns Panel
                             * @throws {Error} If the payload is not 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.retail.v2alpha.Model.PageOptimizationConfig.Panel;

                            /**
                             * Decodes a Panel message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns Panel
                             * @throws {Error} If the payload 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.retail.v2alpha.Model.PageOptimizationConfig.Panel;

                            /**
                             * Verifies a Panel message.
                             * @param message Plain 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 Panel message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns Panel
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.Model.PageOptimizationConfig.Panel;

                            /**
                             * Creates a plain object from a Panel message. Also converts values to other types if specified.
                             * @param message Panel
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.retail.v2alpha.Model.PageOptimizationConfig.Panel, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this Panel to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for Panel
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Restriction enum. */
                        enum Restriction {
                            RESTRICTION_UNSPECIFIED = 0,
                            NO_RESTRICTION = 1,
                            UNIQUE_SERVING_CONFIG_RESTRICTION = 2,
                            UNIQUE_MODEL_RESTRICTION = 3,
                            UNIQUE_MODEL_TYPE_RESTRICTION = 4
                        }
                    }

                    /** Properties of a ServingConfigList. */
                    interface IServingConfigList {

                        /** ServingConfigList servingConfigIds */
                        servingConfigIds?: (string[]|null);
                    }

                    /** Represents a ServingConfigList. */
                    class ServingConfigList implements IServingConfigList {

                        /**
                         * Constructs a new ServingConfigList.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.Model.IServingConfigList);

                        /** ServingConfigList servingConfigIds. */
                        public servingConfigIds: string[];

                        /**
                         * Creates a new ServingConfigList instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ServingConfigList instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.Model.IServingConfigList): google.cloud.retail.v2alpha.Model.ServingConfigList;

                        /**
                         * Encodes the specified ServingConfigList message. Does not implicitly {@link google.cloud.retail.v2alpha.Model.ServingConfigList.verify|verify} messages.
                         * @param message ServingConfigList message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.Model.IServingConfigList, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ServingConfigList message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.Model.ServingConfigList.verify|verify} messages.
                         * @param message ServingConfigList message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.Model.IServingConfigList, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ServingConfigList message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ServingConfigList
                         * @throws {Error} If the payload is not 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.retail.v2alpha.Model.ServingConfigList;

                        /**
                         * Decodes a ServingConfigList message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ServingConfigList
                         * @throws {Error} If the payload 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.retail.v2alpha.Model.ServingConfigList;

                        /**
                         * Verifies a ServingConfigList message.
                         * @param message Plain 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 ServingConfigList message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ServingConfigList
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.Model.ServingConfigList;

                        /**
                         * Creates a plain object from a ServingConfigList message. Also converts values to other types if specified.
                         * @param message ServingConfigList
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.Model.ServingConfigList, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ServingConfigList to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ServingConfigList
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a FrequentlyBoughtTogetherFeaturesConfig. */
                    interface IFrequentlyBoughtTogetherFeaturesConfig {

                        /** FrequentlyBoughtTogetherFeaturesConfig contextProductsType */
                        contextProductsType?: (google.cloud.retail.v2alpha.Model.ContextProductsType|keyof typeof google.cloud.retail.v2alpha.Model.ContextProductsType|null);
                    }

                    /** Represents a FrequentlyBoughtTogetherFeaturesConfig. */
                    class FrequentlyBoughtTogetherFeaturesConfig implements IFrequentlyBoughtTogetherFeaturesConfig {

                        /**
                         * Constructs a new FrequentlyBoughtTogetherFeaturesConfig.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.Model.IFrequentlyBoughtTogetherFeaturesConfig);

                        /** FrequentlyBoughtTogetherFeaturesConfig contextProductsType. */
                        public contextProductsType: (google.cloud.retail.v2alpha.Model.ContextProductsType|keyof typeof google.cloud.retail.v2alpha.Model.ContextProductsType);

                        /**
                         * Creates a new FrequentlyBoughtTogetherFeaturesConfig instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FrequentlyBoughtTogetherFeaturesConfig instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.Model.IFrequentlyBoughtTogetherFeaturesConfig): google.cloud.retail.v2alpha.Model.FrequentlyBoughtTogetherFeaturesConfig;

                        /**
                         * Encodes the specified FrequentlyBoughtTogetherFeaturesConfig message. Does not implicitly {@link google.cloud.retail.v2alpha.Model.FrequentlyBoughtTogetherFeaturesConfig.verify|verify} messages.
                         * @param message FrequentlyBoughtTogetherFeaturesConfig message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.Model.IFrequentlyBoughtTogetherFeaturesConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FrequentlyBoughtTogetherFeaturesConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.Model.FrequentlyBoughtTogetherFeaturesConfig.verify|verify} messages.
                         * @param message FrequentlyBoughtTogetherFeaturesConfig message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.Model.IFrequentlyBoughtTogetherFeaturesConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FrequentlyBoughtTogetherFeaturesConfig message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FrequentlyBoughtTogetherFeaturesConfig
                         * @throws {Error} If the payload is not 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.retail.v2alpha.Model.FrequentlyBoughtTogetherFeaturesConfig;

                        /**
                         * Decodes a FrequentlyBoughtTogetherFeaturesConfig message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FrequentlyBoughtTogetherFeaturesConfig
                         * @throws {Error} If the payload 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.retail.v2alpha.Model.FrequentlyBoughtTogetherFeaturesConfig;

                        /**
                         * Verifies a FrequentlyBoughtTogetherFeaturesConfig message.
                         * @param message Plain 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 FrequentlyBoughtTogetherFeaturesConfig message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FrequentlyBoughtTogetherFeaturesConfig
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.Model.FrequentlyBoughtTogetherFeaturesConfig;

                        /**
                         * Creates a plain object from a FrequentlyBoughtTogetherFeaturesConfig message. Also converts values to other types if specified.
                         * @param message FrequentlyBoughtTogetherFeaturesConfig
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.Model.FrequentlyBoughtTogetherFeaturesConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FrequentlyBoughtTogetherFeaturesConfig to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FrequentlyBoughtTogetherFeaturesConfig
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ModelFeaturesConfig. */
                    interface IModelFeaturesConfig {

                        /** ModelFeaturesConfig frequentlyBoughtTogetherConfig */
                        frequentlyBoughtTogetherConfig?: (google.cloud.retail.v2alpha.Model.IFrequentlyBoughtTogetherFeaturesConfig|null);
                    }

                    /** Represents a ModelFeaturesConfig. */
                    class ModelFeaturesConfig implements IModelFeaturesConfig {

                        /**
                         * Constructs a new ModelFeaturesConfig.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.Model.IModelFeaturesConfig);

                        /** ModelFeaturesConfig frequentlyBoughtTogetherConfig. */
                        public frequentlyBoughtTogetherConfig?: (google.cloud.retail.v2alpha.Model.IFrequentlyBoughtTogetherFeaturesConfig|null);

                        /** ModelFeaturesConfig typeDedicatedConfig. */
                        public typeDedicatedConfig?: "frequentlyBoughtTogetherConfig";

                        /**
                         * Creates a new ModelFeaturesConfig instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ModelFeaturesConfig instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.Model.IModelFeaturesConfig): google.cloud.retail.v2alpha.Model.ModelFeaturesConfig;

                        /**
                         * Encodes the specified ModelFeaturesConfig message. Does not implicitly {@link google.cloud.retail.v2alpha.Model.ModelFeaturesConfig.verify|verify} messages.
                         * @param message ModelFeaturesConfig message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.Model.IModelFeaturesConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ModelFeaturesConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.Model.ModelFeaturesConfig.verify|verify} messages.
                         * @param message ModelFeaturesConfig message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.Model.IModelFeaturesConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ModelFeaturesConfig message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ModelFeaturesConfig
                         * @throws {Error} If the payload is not 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.retail.v2alpha.Model.ModelFeaturesConfig;

                        /**
                         * Decodes a ModelFeaturesConfig message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ModelFeaturesConfig
                         * @throws {Error} If the payload 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.retail.v2alpha.Model.ModelFeaturesConfig;

                        /**
                         * Verifies a ModelFeaturesConfig message.
                         * @param message Plain 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 ModelFeaturesConfig message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ModelFeaturesConfig
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.Model.ModelFeaturesConfig;

                        /**
                         * Creates a plain object from a ModelFeaturesConfig message. Also converts values to other types if specified.
                         * @param message ModelFeaturesConfig
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.Model.ModelFeaturesConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ModelFeaturesConfig to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ModelFeaturesConfig
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** ServingState enum. */
                    enum ServingState {
                        SERVING_STATE_UNSPECIFIED = 0,
                        INACTIVE = 1,
                        ACTIVE = 2,
                        TUNED = 3
                    }

                    /** TrainingState enum. */
                    enum TrainingState {
                        TRAINING_STATE_UNSPECIFIED = 0,
                        PAUSED = 1,
                        TRAINING = 2
                    }

                    /** PeriodicTuningState enum. */
                    enum PeriodicTuningState {
                        PERIODIC_TUNING_STATE_UNSPECIFIED = 0,
                        PERIODIC_TUNING_DISABLED = 1,
                        ALL_TUNING_DISABLED = 3,
                        PERIODIC_TUNING_ENABLED = 2
                    }

                    /** DataState enum. */
                    enum DataState {
                        DATA_STATE_UNSPECIFIED = 0,
                        DATA_OK = 1,
                        DATA_ERROR = 2
                    }

                    /** ContextProductsType enum. */
                    enum ContextProductsType {
                        CONTEXT_PRODUCTS_TYPE_UNSPECIFIED = 0,
                        SINGLE_CONTEXT_PRODUCT = 1,
                        MULTIPLE_CONTEXT_PRODUCTS = 2
                    }
                }

                /** Represents a ModelService */
                class ModelService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new ModelService 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 ModelService 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): ModelService;

                    /**
                     * Calls CreateModel.
                     * @param request CreateModelRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public createModel(request: google.cloud.retail.v2alpha.ICreateModelRequest, callback: google.cloud.retail.v2alpha.ModelService.CreateModelCallback): void;

                    /**
                     * Calls CreateModel.
                     * @param request CreateModelRequest message or plain object
                     * @returns Promise
                     */
                    public createModel(request: google.cloud.retail.v2alpha.ICreateModelRequest): Promise<google.longrunning.Operation>;

                    /**
                     * Calls GetModel.
                     * @param request GetModelRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Model
                     */
                    public getModel(request: google.cloud.retail.v2alpha.IGetModelRequest, callback: google.cloud.retail.v2alpha.ModelService.GetModelCallback): void;

                    /**
                     * Calls GetModel.
                     * @param request GetModelRequest message or plain object
                     * @returns Promise
                     */
                    public getModel(request: google.cloud.retail.v2alpha.IGetModelRequest): Promise<google.cloud.retail.v2alpha.Model>;

                    /**
                     * Calls PauseModel.
                     * @param request PauseModelRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Model
                     */
                    public pauseModel(request: google.cloud.retail.v2alpha.IPauseModelRequest, callback: google.cloud.retail.v2alpha.ModelService.PauseModelCallback): void;

                    /**
                     * Calls PauseModel.
                     * @param request PauseModelRequest message or plain object
                     * @returns Promise
                     */
                    public pauseModel(request: google.cloud.retail.v2alpha.IPauseModelRequest): Promise<google.cloud.retail.v2alpha.Model>;

                    /**
                     * Calls ResumeModel.
                     * @param request ResumeModelRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Model
                     */
                    public resumeModel(request: google.cloud.retail.v2alpha.IResumeModelRequest, callback: google.cloud.retail.v2alpha.ModelService.ResumeModelCallback): void;

                    /**
                     * Calls ResumeModel.
                     * @param request ResumeModelRequest message or plain object
                     * @returns Promise
                     */
                    public resumeModel(request: google.cloud.retail.v2alpha.IResumeModelRequest): Promise<google.cloud.retail.v2alpha.Model>;

                    /**
                     * Calls DeleteModel.
                     * @param request DeleteModelRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Empty
                     */
                    public deleteModel(request: google.cloud.retail.v2alpha.IDeleteModelRequest, callback: google.cloud.retail.v2alpha.ModelService.DeleteModelCallback): void;

                    /**
                     * Calls DeleteModel.
                     * @param request DeleteModelRequest message or plain object
                     * @returns Promise
                     */
                    public deleteModel(request: google.cloud.retail.v2alpha.IDeleteModelRequest): Promise<google.protobuf.Empty>;

                    /**
                     * Calls ListModels.
                     * @param request ListModelsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListModelsResponse
                     */
                    public listModels(request: google.cloud.retail.v2alpha.IListModelsRequest, callback: google.cloud.retail.v2alpha.ModelService.ListModelsCallback): void;

                    /**
                     * Calls ListModels.
                     * @param request ListModelsRequest message or plain object
                     * @returns Promise
                     */
                    public listModels(request: google.cloud.retail.v2alpha.IListModelsRequest): Promise<google.cloud.retail.v2alpha.ListModelsResponse>;

                    /**
                     * Calls UpdateModel.
                     * @param request UpdateModelRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Model
                     */
                    public updateModel(request: google.cloud.retail.v2alpha.IUpdateModelRequest, callback: google.cloud.retail.v2alpha.ModelService.UpdateModelCallback): void;

                    /**
                     * Calls UpdateModel.
                     * @param request UpdateModelRequest message or plain object
                     * @returns Promise
                     */
                    public updateModel(request: google.cloud.retail.v2alpha.IUpdateModelRequest): Promise<google.cloud.retail.v2alpha.Model>;

                    /**
                     * Calls TuneModel.
                     * @param request TuneModelRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public tuneModel(request: google.cloud.retail.v2alpha.ITuneModelRequest, callback: google.cloud.retail.v2alpha.ModelService.TuneModelCallback): void;

                    /**
                     * Calls TuneModel.
                     * @param request TuneModelRequest message or plain object
                     * @returns Promise
                     */
                    public tuneModel(request: google.cloud.retail.v2alpha.ITuneModelRequest): Promise<google.longrunning.Operation>;
                }

                namespace ModelService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ModelService|createModel}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type CreateModelCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ModelService|getModel}.
                     * @param error Error, if any
                     * @param [response] Model
                     */
                    type GetModelCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.Model) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ModelService|pauseModel}.
                     * @param error Error, if any
                     * @param [response] Model
                     */
                    type PauseModelCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.Model) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ModelService|resumeModel}.
                     * @param error Error, if any
                     * @param [response] Model
                     */
                    type ResumeModelCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.Model) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ModelService|deleteModel}.
                     * @param error Error, if any
                     * @param [response] Empty
                     */
                    type DeleteModelCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ModelService|listModels}.
                     * @param error Error, if any
                     * @param [response] ListModelsResponse
                     */
                    type ListModelsCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.ListModelsResponse) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ModelService|updateModel}.
                     * @param error Error, if any
                     * @param [response] Model
                     */
                    type UpdateModelCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.Model) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ModelService|tuneModel}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type TuneModelCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;
                }

                /** Properties of a CreateModelRequest. */
                interface ICreateModelRequest {

                    /** CreateModelRequest parent */
                    parent?: (string|null);

                    /** CreateModelRequest model */
                    model?: (google.cloud.retail.v2alpha.IModel|null);

                    /** CreateModelRequest dryRun */
                    dryRun?: (boolean|null);
                }

                /** Represents a CreateModelRequest. */
                class CreateModelRequest implements ICreateModelRequest {

                    /**
                     * Constructs a new CreateModelRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.ICreateModelRequest);

                    /** CreateModelRequest parent. */
                    public parent: string;

                    /** CreateModelRequest model. */
                    public model?: (google.cloud.retail.v2alpha.IModel|null);

                    /** CreateModelRequest dryRun. */
                    public dryRun: boolean;

                    /**
                     * Creates a new CreateModelRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CreateModelRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.ICreateModelRequest): google.cloud.retail.v2alpha.CreateModelRequest;

                    /**
                     * Encodes the specified CreateModelRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.CreateModelRequest.verify|verify} messages.
                     * @param message CreateModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.ICreateModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CreateModelRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.CreateModelRequest.verify|verify} messages.
                     * @param message CreateModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.ICreateModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CreateModelRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CreateModelRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.CreateModelRequest;

                    /**
                     * Decodes a CreateModelRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CreateModelRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.CreateModelRequest;

                    /**
                     * Verifies a CreateModelRequest message.
                     * @param message Plain 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 CreateModelRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CreateModelRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.CreateModelRequest;

                    /**
                     * Creates a plain object from a CreateModelRequest message. Also converts values to other types if specified.
                     * @param message CreateModelRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.CreateModelRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CreateModelRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CreateModelRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateModelRequest. */
                interface IUpdateModelRequest {

                    /** UpdateModelRequest model */
                    model?: (google.cloud.retail.v2alpha.IModel|null);

                    /** UpdateModelRequest updateMask */
                    updateMask?: (google.protobuf.IFieldMask|null);
                }

                /** Represents an UpdateModelRequest. */
                class UpdateModelRequest implements IUpdateModelRequest {

                    /**
                     * Constructs a new UpdateModelRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IUpdateModelRequest);

                    /** UpdateModelRequest model. */
                    public model?: (google.cloud.retail.v2alpha.IModel|null);

                    /** UpdateModelRequest updateMask. */
                    public updateMask?: (google.protobuf.IFieldMask|null);

                    /**
                     * Creates a new UpdateModelRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateModelRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IUpdateModelRequest): google.cloud.retail.v2alpha.UpdateModelRequest;

                    /**
                     * Encodes the specified UpdateModelRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.UpdateModelRequest.verify|verify} messages.
                     * @param message UpdateModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IUpdateModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateModelRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.UpdateModelRequest.verify|verify} messages.
                     * @param message UpdateModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IUpdateModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateModelRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateModelRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.UpdateModelRequest;

                    /**
                     * Decodes an UpdateModelRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateModelRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.UpdateModelRequest;

                    /**
                     * Verifies an UpdateModelRequest message.
                     * @param message Plain 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 UpdateModelRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateModelRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.UpdateModelRequest;

                    /**
                     * Creates a plain object from an UpdateModelRequest message. Also converts values to other types if specified.
                     * @param message UpdateModelRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.UpdateModelRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateModelRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateModelRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetModelRequest. */
                interface IGetModelRequest {

                    /** GetModelRequest name */
                    name?: (string|null);
                }

                /** Represents a GetModelRequest. */
                class GetModelRequest implements IGetModelRequest {

                    /**
                     * Constructs a new GetModelRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IGetModelRequest);

                    /** GetModelRequest name. */
                    public name: string;

                    /**
                     * Creates a new GetModelRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetModelRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IGetModelRequest): google.cloud.retail.v2alpha.GetModelRequest;

                    /**
                     * Encodes the specified GetModelRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.GetModelRequest.verify|verify} messages.
                     * @param message GetModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IGetModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetModelRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.GetModelRequest.verify|verify} messages.
                     * @param message GetModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IGetModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetModelRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetModelRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.GetModelRequest;

                    /**
                     * Decodes a GetModelRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetModelRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.GetModelRequest;

                    /**
                     * Verifies a GetModelRequest message.
                     * @param message Plain 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 GetModelRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetModelRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.GetModelRequest;

                    /**
                     * Creates a plain object from a GetModelRequest message. Also converts values to other types if specified.
                     * @param message GetModelRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.GetModelRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetModelRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetModelRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PauseModelRequest. */
                interface IPauseModelRequest {

                    /** PauseModelRequest name */
                    name?: (string|null);
                }

                /** Represents a PauseModelRequest. */
                class PauseModelRequest implements IPauseModelRequest {

                    /**
                     * Constructs a new PauseModelRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IPauseModelRequest);

                    /** PauseModelRequest name. */
                    public name: string;

                    /**
                     * Creates a new PauseModelRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PauseModelRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IPauseModelRequest): google.cloud.retail.v2alpha.PauseModelRequest;

                    /**
                     * Encodes the specified PauseModelRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.PauseModelRequest.verify|verify} messages.
                     * @param message PauseModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IPauseModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PauseModelRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.PauseModelRequest.verify|verify} messages.
                     * @param message PauseModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IPauseModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PauseModelRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PauseModelRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.PauseModelRequest;

                    /**
                     * Decodes a PauseModelRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PauseModelRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.PauseModelRequest;

                    /**
                     * Verifies a PauseModelRequest message.
                     * @param message Plain 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 PauseModelRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PauseModelRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.PauseModelRequest;

                    /**
                     * Creates a plain object from a PauseModelRequest message. Also converts values to other types if specified.
                     * @param message PauseModelRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.PauseModelRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PauseModelRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PauseModelRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ResumeModelRequest. */
                interface IResumeModelRequest {

                    /** ResumeModelRequest name */
                    name?: (string|null);
                }

                /** Represents a ResumeModelRequest. */
                class ResumeModelRequest implements IResumeModelRequest {

                    /**
                     * Constructs a new ResumeModelRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IResumeModelRequest);

                    /** ResumeModelRequest name. */
                    public name: string;

                    /**
                     * Creates a new ResumeModelRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ResumeModelRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IResumeModelRequest): google.cloud.retail.v2alpha.ResumeModelRequest;

                    /**
                     * Encodes the specified ResumeModelRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.ResumeModelRequest.verify|verify} messages.
                     * @param message ResumeModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IResumeModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ResumeModelRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ResumeModelRequest.verify|verify} messages.
                     * @param message ResumeModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IResumeModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ResumeModelRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ResumeModelRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ResumeModelRequest;

                    /**
                     * Decodes a ResumeModelRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ResumeModelRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.ResumeModelRequest;

                    /**
                     * Verifies a ResumeModelRequest message.
                     * @param message Plain 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 ResumeModelRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ResumeModelRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ResumeModelRequest;

                    /**
                     * Creates a plain object from a ResumeModelRequest message. Also converts values to other types if specified.
                     * @param message ResumeModelRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ResumeModelRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ResumeModelRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ResumeModelRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListModelsRequest. */
                interface IListModelsRequest {

                    /** ListModelsRequest parent */
                    parent?: (string|null);

                    /** ListModelsRequest pageSize */
                    pageSize?: (number|null);

                    /** ListModelsRequest pageToken */
                    pageToken?: (string|null);
                }

                /** Represents a ListModelsRequest. */
                class ListModelsRequest implements IListModelsRequest {

                    /**
                     * Constructs a new ListModelsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IListModelsRequest);

                    /** ListModelsRequest parent. */
                    public parent: string;

                    /** ListModelsRequest pageSize. */
                    public pageSize: number;

                    /** ListModelsRequest pageToken. */
                    public pageToken: string;

                    /**
                     * Creates a new ListModelsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListModelsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IListModelsRequest): google.cloud.retail.v2alpha.ListModelsRequest;

                    /**
                     * Encodes the specified ListModelsRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.ListModelsRequest.verify|verify} messages.
                     * @param message ListModelsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IListModelsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListModelsRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ListModelsRequest.verify|verify} messages.
                     * @param message ListModelsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IListModelsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListModelsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListModelsRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ListModelsRequest;

                    /**
                     * Decodes a ListModelsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListModelsRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.ListModelsRequest;

                    /**
                     * Verifies a ListModelsRequest message.
                     * @param message Plain 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 ListModelsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListModelsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ListModelsRequest;

                    /**
                     * Creates a plain object from a ListModelsRequest message. Also converts values to other types if specified.
                     * @param message ListModelsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ListModelsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListModelsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListModelsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeleteModelRequest. */
                interface IDeleteModelRequest {

                    /** DeleteModelRequest name */
                    name?: (string|null);
                }

                /** Represents a DeleteModelRequest. */
                class DeleteModelRequest implements IDeleteModelRequest {

                    /**
                     * Constructs a new DeleteModelRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IDeleteModelRequest);

                    /** DeleteModelRequest name. */
                    public name: string;

                    /**
                     * Creates a new DeleteModelRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeleteModelRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IDeleteModelRequest): google.cloud.retail.v2alpha.DeleteModelRequest;

                    /**
                     * Encodes the specified DeleteModelRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.DeleteModelRequest.verify|verify} messages.
                     * @param message DeleteModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IDeleteModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeleteModelRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.DeleteModelRequest.verify|verify} messages.
                     * @param message DeleteModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IDeleteModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeleteModelRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeleteModelRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.DeleteModelRequest;

                    /**
                     * Decodes a DeleteModelRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeleteModelRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.DeleteModelRequest;

                    /**
                     * Verifies a DeleteModelRequest message.
                     * @param message Plain 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 DeleteModelRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeleteModelRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.DeleteModelRequest;

                    /**
                     * Creates a plain object from a DeleteModelRequest message. Also converts values to other types if specified.
                     * @param message DeleteModelRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.DeleteModelRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeleteModelRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeleteModelRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListModelsResponse. */
                interface IListModelsResponse {

                    /** ListModelsResponse models */
                    models?: (google.cloud.retail.v2alpha.IModel[]|null);

                    /** ListModelsResponse nextPageToken */
                    nextPageToken?: (string|null);
                }

                /** Represents a ListModelsResponse. */
                class ListModelsResponse implements IListModelsResponse {

                    /**
                     * Constructs a new ListModelsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IListModelsResponse);

                    /** ListModelsResponse models. */
                    public models: google.cloud.retail.v2alpha.IModel[];

                    /** ListModelsResponse nextPageToken. */
                    public nextPageToken: string;

                    /**
                     * Creates a new ListModelsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListModelsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IListModelsResponse): google.cloud.retail.v2alpha.ListModelsResponse;

                    /**
                     * Encodes the specified ListModelsResponse message. Does not implicitly {@link google.cloud.retail.v2alpha.ListModelsResponse.verify|verify} messages.
                     * @param message ListModelsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IListModelsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListModelsResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ListModelsResponse.verify|verify} messages.
                     * @param message ListModelsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IListModelsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListModelsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListModelsResponse
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ListModelsResponse;

                    /**
                     * Decodes a ListModelsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListModelsResponse
                     * @throws {Error} If the payload 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.retail.v2alpha.ListModelsResponse;

                    /**
                     * Verifies a ListModelsResponse message.
                     * @param message Plain 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 ListModelsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListModelsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ListModelsResponse;

                    /**
                     * Creates a plain object from a ListModelsResponse message. Also converts values to other types if specified.
                     * @param message ListModelsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ListModelsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListModelsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListModelsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TuneModelRequest. */
                interface ITuneModelRequest {

                    /** TuneModelRequest name */
                    name?: (string|null);
                }

                /** Represents a TuneModelRequest. */
                class TuneModelRequest implements ITuneModelRequest {

                    /**
                     * Constructs a new TuneModelRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.ITuneModelRequest);

                    /** TuneModelRequest name. */
                    public name: string;

                    /**
                     * Creates a new TuneModelRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TuneModelRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.ITuneModelRequest): google.cloud.retail.v2alpha.TuneModelRequest;

                    /**
                     * Encodes the specified TuneModelRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.TuneModelRequest.verify|verify} messages.
                     * @param message TuneModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.ITuneModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TuneModelRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.TuneModelRequest.verify|verify} messages.
                     * @param message TuneModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.ITuneModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TuneModelRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TuneModelRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.TuneModelRequest;

                    /**
                     * Decodes a TuneModelRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TuneModelRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.TuneModelRequest;

                    /**
                     * Verifies a TuneModelRequest message.
                     * @param message Plain 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 TuneModelRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TuneModelRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.TuneModelRequest;

                    /**
                     * Creates a plain object from a TuneModelRequest message. Also converts values to other types if specified.
                     * @param message TuneModelRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.TuneModelRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TuneModelRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TuneModelRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CreateModelMetadata. */
                interface ICreateModelMetadata {

                    /** CreateModelMetadata model */
                    model?: (string|null);
                }

                /** Represents a CreateModelMetadata. */
                class CreateModelMetadata implements ICreateModelMetadata {

                    /**
                     * Constructs a new CreateModelMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.ICreateModelMetadata);

                    /** CreateModelMetadata model. */
                    public model: string;

                    /**
                     * Creates a new CreateModelMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CreateModelMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.ICreateModelMetadata): google.cloud.retail.v2alpha.CreateModelMetadata;

                    /**
                     * Encodes the specified CreateModelMetadata message. Does not implicitly {@link google.cloud.retail.v2alpha.CreateModelMetadata.verify|verify} messages.
                     * @param message CreateModelMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.ICreateModelMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CreateModelMetadata message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.CreateModelMetadata.verify|verify} messages.
                     * @param message CreateModelMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.ICreateModelMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CreateModelMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CreateModelMetadata
                     * @throws {Error} If the payload is not 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.retail.v2alpha.CreateModelMetadata;

                    /**
                     * Decodes a CreateModelMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CreateModelMetadata
                     * @throws {Error} If the payload 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.retail.v2alpha.CreateModelMetadata;

                    /**
                     * Verifies a CreateModelMetadata message.
                     * @param message Plain 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 CreateModelMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CreateModelMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.CreateModelMetadata;

                    /**
                     * Creates a plain object from a CreateModelMetadata message. Also converts values to other types if specified.
                     * @param message CreateModelMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.CreateModelMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CreateModelMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CreateModelMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TuneModelMetadata. */
                interface ITuneModelMetadata {

                    /** TuneModelMetadata model */
                    model?: (string|null);
                }

                /** Represents a TuneModelMetadata. */
                class TuneModelMetadata implements ITuneModelMetadata {

                    /**
                     * Constructs a new TuneModelMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.ITuneModelMetadata);

                    /** TuneModelMetadata model. */
                    public model: string;

                    /**
                     * Creates a new TuneModelMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TuneModelMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.ITuneModelMetadata): google.cloud.retail.v2alpha.TuneModelMetadata;

                    /**
                     * Encodes the specified TuneModelMetadata message. Does not implicitly {@link google.cloud.retail.v2alpha.TuneModelMetadata.verify|verify} messages.
                     * @param message TuneModelMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.ITuneModelMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TuneModelMetadata message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.TuneModelMetadata.verify|verify} messages.
                     * @param message TuneModelMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.ITuneModelMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TuneModelMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TuneModelMetadata
                     * @throws {Error} If the payload is not 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.retail.v2alpha.TuneModelMetadata;

                    /**
                     * Decodes a TuneModelMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TuneModelMetadata
                     * @throws {Error} If the payload 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.retail.v2alpha.TuneModelMetadata;

                    /**
                     * Verifies a TuneModelMetadata message.
                     * @param message Plain 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 TuneModelMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TuneModelMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.TuneModelMetadata;

                    /**
                     * Creates a plain object from a TuneModelMetadata message. Also converts values to other types if specified.
                     * @param message TuneModelMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.TuneModelMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TuneModelMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TuneModelMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TuneModelResponse. */
                interface ITuneModelResponse {
                }

                /** Represents a TuneModelResponse. */
                class TuneModelResponse implements ITuneModelResponse {

                    /**
                     * Constructs a new TuneModelResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.ITuneModelResponse);

                    /**
                     * Creates a new TuneModelResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TuneModelResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.ITuneModelResponse): google.cloud.retail.v2alpha.TuneModelResponse;

                    /**
                     * Encodes the specified TuneModelResponse message. Does not implicitly {@link google.cloud.retail.v2alpha.TuneModelResponse.verify|verify} messages.
                     * @param message TuneModelResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.ITuneModelResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TuneModelResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.TuneModelResponse.verify|verify} messages.
                     * @param message TuneModelResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.ITuneModelResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TuneModelResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TuneModelResponse
                     * @throws {Error} If the payload is not 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.retail.v2alpha.TuneModelResponse;

                    /**
                     * Decodes a TuneModelResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TuneModelResponse
                     * @throws {Error} If the payload 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.retail.v2alpha.TuneModelResponse;

                    /**
                     * Verifies a TuneModelResponse message.
                     * @param message Plain 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 TuneModelResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TuneModelResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.TuneModelResponse;

                    /**
                     * Creates a plain object from a TuneModelResponse message. Also converts values to other types if specified.
                     * @param message TuneModelResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.TuneModelResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TuneModelResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TuneModelResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Represents a PredictionService */
                class PredictionService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new PredictionService 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 PredictionService 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): PredictionService;

                    /**
                     * Calls Predict.
                     * @param request PredictRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and PredictResponse
                     */
                    public predict(request: google.cloud.retail.v2alpha.IPredictRequest, callback: google.cloud.retail.v2alpha.PredictionService.PredictCallback): void;

                    /**
                     * Calls Predict.
                     * @param request PredictRequest message or plain object
                     * @returns Promise
                     */
                    public predict(request: google.cloud.retail.v2alpha.IPredictRequest): Promise<google.cloud.retail.v2alpha.PredictResponse>;
                }

                namespace PredictionService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.PredictionService|predict}.
                     * @param error Error, if any
                     * @param [response] PredictResponse
                     */
                    type PredictCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.PredictResponse) => void;
                }

                /** Properties of a PredictRequest. */
                interface IPredictRequest {

                    /** PredictRequest placement */
                    placement?: (string|null);

                    /** PredictRequest userEvent */
                    userEvent?: (google.cloud.retail.v2alpha.IUserEvent|null);

                    /** PredictRequest pageSize */
                    pageSize?: (number|null);

                    /** PredictRequest pageToken */
                    pageToken?: (string|null);

                    /** PredictRequest filter */
                    filter?: (string|null);

                    /** PredictRequest validateOnly */
                    validateOnly?: (boolean|null);

                    /** PredictRequest params */
                    params?: ({ [k: string]: google.protobuf.IValue }|null);

                    /** PredictRequest labels */
                    labels?: ({ [k: string]: string }|null);
                }

                /** Represents a PredictRequest. */
                class PredictRequest implements IPredictRequest {

                    /**
                     * Constructs a new PredictRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IPredictRequest);

                    /** PredictRequest placement. */
                    public placement: string;

                    /** PredictRequest userEvent. */
                    public userEvent?: (google.cloud.retail.v2alpha.IUserEvent|null);

                    /** PredictRequest pageSize. */
                    public pageSize: number;

                    /** PredictRequest pageToken. */
                    public pageToken: string;

                    /** PredictRequest filter. */
                    public filter: string;

                    /** PredictRequest validateOnly. */
                    public validateOnly: boolean;

                    /** PredictRequest params. */
                    public params: { [k: string]: google.protobuf.IValue };

                    /** PredictRequest labels. */
                    public labels: { [k: string]: string };

                    /**
                     * Creates a new PredictRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PredictRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IPredictRequest): google.cloud.retail.v2alpha.PredictRequest;

                    /**
                     * Encodes the specified PredictRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.PredictRequest.verify|verify} messages.
                     * @param message PredictRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IPredictRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PredictRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.PredictRequest.verify|verify} messages.
                     * @param message PredictRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IPredictRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PredictRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PredictRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.PredictRequest;

                    /**
                     * Decodes a PredictRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PredictRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.PredictRequest;

                    /**
                     * Verifies a PredictRequest message.
                     * @param message Plain 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 PredictRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PredictRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.PredictRequest;

                    /**
                     * Creates a plain object from a PredictRequest message. Also converts values to other types if specified.
                     * @param message PredictRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.PredictRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PredictRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PredictRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PredictResponse. */
                interface IPredictResponse {

                    /** PredictResponse results */
                    results?: (google.cloud.retail.v2alpha.PredictResponse.IPredictionResult[]|null);

                    /** PredictResponse attributionToken */
                    attributionToken?: (string|null);

                    /** PredictResponse missingIds */
                    missingIds?: (string[]|null);

                    /** PredictResponse validateOnly */
                    validateOnly?: (boolean|null);
                }

                /** Represents a PredictResponse. */
                class PredictResponse implements IPredictResponse {

                    /**
                     * Constructs a new PredictResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IPredictResponse);

                    /** PredictResponse results. */
                    public results: google.cloud.retail.v2alpha.PredictResponse.IPredictionResult[];

                    /** PredictResponse attributionToken. */
                    public attributionToken: string;

                    /** PredictResponse missingIds. */
                    public missingIds: string[];

                    /** PredictResponse validateOnly. */
                    public validateOnly: boolean;

                    /**
                     * Creates a new PredictResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PredictResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IPredictResponse): google.cloud.retail.v2alpha.PredictResponse;

                    /**
                     * Encodes the specified PredictResponse message. Does not implicitly {@link google.cloud.retail.v2alpha.PredictResponse.verify|verify} messages.
                     * @param message PredictResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IPredictResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PredictResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.PredictResponse.verify|verify} messages.
                     * @param message PredictResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IPredictResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PredictResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PredictResponse
                     * @throws {Error} If the payload is not 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.retail.v2alpha.PredictResponse;

                    /**
                     * Decodes a PredictResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PredictResponse
                     * @throws {Error} If the payload 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.retail.v2alpha.PredictResponse;

                    /**
                     * Verifies a PredictResponse message.
                     * @param message Plain 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 PredictResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PredictResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.PredictResponse;

                    /**
                     * Creates a plain object from a PredictResponse message. Also converts values to other types if specified.
                     * @param message PredictResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.PredictResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PredictResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PredictResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace PredictResponse {

                    /** Properties of a PredictionResult. */
                    interface IPredictionResult {

                        /** PredictionResult id */
                        id?: (string|null);

                        /** PredictionResult metadata */
                        metadata?: ({ [k: string]: google.protobuf.IValue }|null);
                    }

                    /** Represents a PredictionResult. */
                    class PredictionResult implements IPredictionResult {

                        /**
                         * Constructs a new PredictionResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.PredictResponse.IPredictionResult);

                        /** PredictionResult id. */
                        public id: string;

                        /** PredictionResult metadata. */
                        public metadata: { [k: string]: google.protobuf.IValue };

                        /**
                         * Creates a new PredictionResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PredictionResult instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.PredictResponse.IPredictionResult): google.cloud.retail.v2alpha.PredictResponse.PredictionResult;

                        /**
                         * Encodes the specified PredictionResult message. Does not implicitly {@link google.cloud.retail.v2alpha.PredictResponse.PredictionResult.verify|verify} messages.
                         * @param message PredictionResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.PredictResponse.IPredictionResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PredictionResult message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.PredictResponse.PredictionResult.verify|verify} messages.
                         * @param message PredictionResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.PredictResponse.IPredictionResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PredictionResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PredictionResult
                         * @throws {Error} If the payload is not 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.retail.v2alpha.PredictResponse.PredictionResult;

                        /**
                         * Decodes a PredictionResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PredictionResult
                         * @throws {Error} If the payload 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.retail.v2alpha.PredictResponse.PredictionResult;

                        /**
                         * Verifies a PredictionResult message.
                         * @param message Plain 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 PredictionResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PredictionResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.PredictResponse.PredictionResult;

                        /**
                         * Creates a plain object from a PredictionResult message. Also converts values to other types if specified.
                         * @param message PredictionResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.PredictResponse.PredictionResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PredictionResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PredictionResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Represents a ProductService */
                class ProductService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new ProductService 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 ProductService 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): ProductService;

                    /**
                     * Calls CreateProduct.
                     * @param request CreateProductRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Product
                     */
                    public createProduct(request: google.cloud.retail.v2alpha.ICreateProductRequest, callback: google.cloud.retail.v2alpha.ProductService.CreateProductCallback): void;

                    /**
                     * Calls CreateProduct.
                     * @param request CreateProductRequest message or plain object
                     * @returns Promise
                     */
                    public createProduct(request: google.cloud.retail.v2alpha.ICreateProductRequest): Promise<google.cloud.retail.v2alpha.Product>;

                    /**
                     * Calls GetProduct.
                     * @param request GetProductRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Product
                     */
                    public getProduct(request: google.cloud.retail.v2alpha.IGetProductRequest, callback: google.cloud.retail.v2alpha.ProductService.GetProductCallback): void;

                    /**
                     * Calls GetProduct.
                     * @param request GetProductRequest message or plain object
                     * @returns Promise
                     */
                    public getProduct(request: google.cloud.retail.v2alpha.IGetProductRequest): Promise<google.cloud.retail.v2alpha.Product>;

                    /**
                     * Calls ListProducts.
                     * @param request ListProductsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListProductsResponse
                     */
                    public listProducts(request: google.cloud.retail.v2alpha.IListProductsRequest, callback: google.cloud.retail.v2alpha.ProductService.ListProductsCallback): void;

                    /**
                     * Calls ListProducts.
                     * @param request ListProductsRequest message or plain object
                     * @returns Promise
                     */
                    public listProducts(request: google.cloud.retail.v2alpha.IListProductsRequest): Promise<google.cloud.retail.v2alpha.ListProductsResponse>;

                    /**
                     * Calls UpdateProduct.
                     * @param request UpdateProductRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Product
                     */
                    public updateProduct(request: google.cloud.retail.v2alpha.IUpdateProductRequest, callback: google.cloud.retail.v2alpha.ProductService.UpdateProductCallback): void;

                    /**
                     * Calls UpdateProduct.
                     * @param request UpdateProductRequest message or plain object
                     * @returns Promise
                     */
                    public updateProduct(request: google.cloud.retail.v2alpha.IUpdateProductRequest): Promise<google.cloud.retail.v2alpha.Product>;

                    /**
                     * Calls DeleteProduct.
                     * @param request DeleteProductRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Empty
                     */
                    public deleteProduct(request: google.cloud.retail.v2alpha.IDeleteProductRequest, callback: google.cloud.retail.v2alpha.ProductService.DeleteProductCallback): void;

                    /**
                     * Calls DeleteProduct.
                     * @param request DeleteProductRequest message or plain object
                     * @returns Promise
                     */
                    public deleteProduct(request: google.cloud.retail.v2alpha.IDeleteProductRequest): Promise<google.protobuf.Empty>;

                    /**
                     * Calls PurgeProducts.
                     * @param request PurgeProductsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public purgeProducts(request: google.cloud.retail.v2alpha.IPurgeProductsRequest, callback: google.cloud.retail.v2alpha.ProductService.PurgeProductsCallback): void;

                    /**
                     * Calls PurgeProducts.
                     * @param request PurgeProductsRequest message or plain object
                     * @returns Promise
                     */
                    public purgeProducts(request: google.cloud.retail.v2alpha.IPurgeProductsRequest): Promise<google.longrunning.Operation>;

                    /**
                     * Calls ImportProducts.
                     * @param request ImportProductsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public importProducts(request: google.cloud.retail.v2alpha.IImportProductsRequest, callback: google.cloud.retail.v2alpha.ProductService.ImportProductsCallback): void;

                    /**
                     * Calls ImportProducts.
                     * @param request ImportProductsRequest message or plain object
                     * @returns Promise
                     */
                    public importProducts(request: google.cloud.retail.v2alpha.IImportProductsRequest): Promise<google.longrunning.Operation>;

                    /**
                     * Calls ExportProducts.
                     * @param request ExportProductsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public exportProducts(request: google.cloud.retail.v2alpha.IExportProductsRequest, callback: google.cloud.retail.v2alpha.ProductService.ExportProductsCallback): void;

                    /**
                     * Calls ExportProducts.
                     * @param request ExportProductsRequest message or plain object
                     * @returns Promise
                     */
                    public exportProducts(request: google.cloud.retail.v2alpha.IExportProductsRequest): Promise<google.longrunning.Operation>;

                    /**
                     * Calls SetInventory.
                     * @param request SetInventoryRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public setInventory(request: google.cloud.retail.v2alpha.ISetInventoryRequest, callback: google.cloud.retail.v2alpha.ProductService.SetInventoryCallback): void;

                    /**
                     * Calls SetInventory.
                     * @param request SetInventoryRequest message or plain object
                     * @returns Promise
                     */
                    public setInventory(request: google.cloud.retail.v2alpha.ISetInventoryRequest): Promise<google.longrunning.Operation>;

                    /**
                     * Calls AddFulfillmentPlaces.
                     * @param request AddFulfillmentPlacesRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public addFulfillmentPlaces(request: google.cloud.retail.v2alpha.IAddFulfillmentPlacesRequest, callback: google.cloud.retail.v2alpha.ProductService.AddFulfillmentPlacesCallback): void;

                    /**
                     * Calls AddFulfillmentPlaces.
                     * @param request AddFulfillmentPlacesRequest message or plain object
                     * @returns Promise
                     */
                    public addFulfillmentPlaces(request: google.cloud.retail.v2alpha.IAddFulfillmentPlacesRequest): Promise<google.longrunning.Operation>;

                    /**
                     * Calls RemoveFulfillmentPlaces.
                     * @param request RemoveFulfillmentPlacesRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public removeFulfillmentPlaces(request: google.cloud.retail.v2alpha.IRemoveFulfillmentPlacesRequest, callback: google.cloud.retail.v2alpha.ProductService.RemoveFulfillmentPlacesCallback): void;

                    /**
                     * Calls RemoveFulfillmentPlaces.
                     * @param request RemoveFulfillmentPlacesRequest message or plain object
                     * @returns Promise
                     */
                    public removeFulfillmentPlaces(request: google.cloud.retail.v2alpha.IRemoveFulfillmentPlacesRequest): Promise<google.longrunning.Operation>;

                    /**
                     * Calls AddLocalInventories.
                     * @param request AddLocalInventoriesRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public addLocalInventories(request: google.cloud.retail.v2alpha.IAddLocalInventoriesRequest, callback: google.cloud.retail.v2alpha.ProductService.AddLocalInventoriesCallback): void;

                    /**
                     * Calls AddLocalInventories.
                     * @param request AddLocalInventoriesRequest message or plain object
                     * @returns Promise
                     */
                    public addLocalInventories(request: google.cloud.retail.v2alpha.IAddLocalInventoriesRequest): Promise<google.longrunning.Operation>;

                    /**
                     * Calls RemoveLocalInventories.
                     * @param request RemoveLocalInventoriesRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public removeLocalInventories(request: google.cloud.retail.v2alpha.IRemoveLocalInventoriesRequest, callback: google.cloud.retail.v2alpha.ProductService.RemoveLocalInventoriesCallback): void;

                    /**
                     * Calls RemoveLocalInventories.
                     * @param request RemoveLocalInventoriesRequest message or plain object
                     * @returns Promise
                     */
                    public removeLocalInventories(request: google.cloud.retail.v2alpha.IRemoveLocalInventoriesRequest): Promise<google.longrunning.Operation>;
                }

                namespace ProductService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ProductService|createProduct}.
                     * @param error Error, if any
                     * @param [response] Product
                     */
                    type CreateProductCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.Product) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ProductService|getProduct}.
                     * @param error Error, if any
                     * @param [response] Product
                     */
                    type GetProductCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.Product) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ProductService|listProducts}.
                     * @param error Error, if any
                     * @param [response] ListProductsResponse
                     */
                    type ListProductsCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.ListProductsResponse) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ProductService|updateProduct}.
                     * @param error Error, if any
                     * @param [response] Product
                     */
                    type UpdateProductCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.Product) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ProductService|deleteProduct}.
                     * @param error Error, if any
                     * @param [response] Empty
                     */
                    type DeleteProductCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ProductService|purgeProducts}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type PurgeProductsCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ProductService|importProducts}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type ImportProductsCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ProductService|exportProducts}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type ExportProductsCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ProductService|setInventory}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type SetInventoryCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ProductService|addFulfillmentPlaces}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type AddFulfillmentPlacesCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ProductService|removeFulfillmentPlaces}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type RemoveFulfillmentPlacesCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ProductService|addLocalInventories}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type AddLocalInventoriesCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ProductService|removeLocalInventories}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type RemoveLocalInventoriesCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;
                }

                /** Properties of a CreateProductRequest. */
                interface ICreateProductRequest {

                    /** CreateProductRequest parent */
                    parent?: (string|null);

                    /** CreateProductRequest product */
                    product?: (google.cloud.retail.v2alpha.IProduct|null);

                    /** CreateProductRequest productId */
                    productId?: (string|null);
                }

                /** Represents a CreateProductRequest. */
                class CreateProductRequest implements ICreateProductRequest {

                    /**
                     * Constructs a new CreateProductRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.ICreateProductRequest);

                    /** CreateProductRequest parent. */
                    public parent: string;

                    /** CreateProductRequest product. */
                    public product?: (google.cloud.retail.v2alpha.IProduct|null);

                    /** CreateProductRequest productId. */
                    public productId: string;

                    /**
                     * Creates a new CreateProductRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CreateProductRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.ICreateProductRequest): google.cloud.retail.v2alpha.CreateProductRequest;

                    /**
                     * Encodes the specified CreateProductRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.CreateProductRequest.verify|verify} messages.
                     * @param message CreateProductRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.ICreateProductRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CreateProductRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.CreateProductRequest.verify|verify} messages.
                     * @param message CreateProductRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.ICreateProductRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CreateProductRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CreateProductRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.CreateProductRequest;

                    /**
                     * Decodes a CreateProductRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CreateProductRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.CreateProductRequest;

                    /**
                     * Verifies a CreateProductRequest message.
                     * @param message Plain 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 CreateProductRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CreateProductRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.CreateProductRequest;

                    /**
                     * Creates a plain object from a CreateProductRequest message. Also converts values to other types if specified.
                     * @param message CreateProductRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.CreateProductRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CreateProductRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CreateProductRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetProductRequest. */
                interface IGetProductRequest {

                    /** GetProductRequest name */
                    name?: (string|null);
                }

                /** Represents a GetProductRequest. */
                class GetProductRequest implements IGetProductRequest {

                    /**
                     * Constructs a new GetProductRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IGetProductRequest);

                    /** GetProductRequest name. */
                    public name: string;

                    /**
                     * Creates a new GetProductRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetProductRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IGetProductRequest): google.cloud.retail.v2alpha.GetProductRequest;

                    /**
                     * Encodes the specified GetProductRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.GetProductRequest.verify|verify} messages.
                     * @param message GetProductRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IGetProductRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetProductRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.GetProductRequest.verify|verify} messages.
                     * @param message GetProductRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IGetProductRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetProductRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetProductRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.GetProductRequest;

                    /**
                     * Decodes a GetProductRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetProductRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.GetProductRequest;

                    /**
                     * Verifies a GetProductRequest message.
                     * @param message Plain 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 GetProductRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetProductRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.GetProductRequest;

                    /**
                     * Creates a plain object from a GetProductRequest message. Also converts values to other types if specified.
                     * @param message GetProductRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.GetProductRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetProductRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetProductRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateProductRequest. */
                interface IUpdateProductRequest {

                    /** UpdateProductRequest product */
                    product?: (google.cloud.retail.v2alpha.IProduct|null);

                    /** UpdateProductRequest updateMask */
                    updateMask?: (google.protobuf.IFieldMask|null);

                    /** UpdateProductRequest allowMissing */
                    allowMissing?: (boolean|null);
                }

                /** Represents an UpdateProductRequest. */
                class UpdateProductRequest implements IUpdateProductRequest {

                    /**
                     * Constructs a new UpdateProductRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IUpdateProductRequest);

                    /** UpdateProductRequest product. */
                    public product?: (google.cloud.retail.v2alpha.IProduct|null);

                    /** UpdateProductRequest updateMask. */
                    public updateMask?: (google.protobuf.IFieldMask|null);

                    /** UpdateProductRequest allowMissing. */
                    public allowMissing: boolean;

                    /**
                     * Creates a new UpdateProductRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateProductRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IUpdateProductRequest): google.cloud.retail.v2alpha.UpdateProductRequest;

                    /**
                     * Encodes the specified UpdateProductRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.UpdateProductRequest.verify|verify} messages.
                     * @param message UpdateProductRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IUpdateProductRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateProductRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.UpdateProductRequest.verify|verify} messages.
                     * @param message UpdateProductRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IUpdateProductRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateProductRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateProductRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.UpdateProductRequest;

                    /**
                     * Decodes an UpdateProductRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateProductRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.UpdateProductRequest;

                    /**
                     * Verifies an UpdateProductRequest message.
                     * @param message Plain 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 UpdateProductRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateProductRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.UpdateProductRequest;

                    /**
                     * Creates a plain object from an UpdateProductRequest message. Also converts values to other types if specified.
                     * @param message UpdateProductRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.UpdateProductRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateProductRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateProductRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeleteProductRequest. */
                interface IDeleteProductRequest {

                    /** DeleteProductRequest name */
                    name?: (string|null);

                    /** DeleteProductRequest force */
                    force?: (boolean|null);
                }

                /** Represents a DeleteProductRequest. */
                class DeleteProductRequest implements IDeleteProductRequest {

                    /**
                     * Constructs a new DeleteProductRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IDeleteProductRequest);

                    /** DeleteProductRequest name. */
                    public name: string;

                    /** DeleteProductRequest force. */
                    public force: boolean;

                    /**
                     * Creates a new DeleteProductRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeleteProductRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IDeleteProductRequest): google.cloud.retail.v2alpha.DeleteProductRequest;

                    /**
                     * Encodes the specified DeleteProductRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.DeleteProductRequest.verify|verify} messages.
                     * @param message DeleteProductRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IDeleteProductRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeleteProductRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.DeleteProductRequest.verify|verify} messages.
                     * @param message DeleteProductRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IDeleteProductRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeleteProductRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeleteProductRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.DeleteProductRequest;

                    /**
                     * Decodes a DeleteProductRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeleteProductRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.DeleteProductRequest;

                    /**
                     * Verifies a DeleteProductRequest message.
                     * @param message Plain 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 DeleteProductRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeleteProductRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.DeleteProductRequest;

                    /**
                     * Creates a plain object from a DeleteProductRequest message. Also converts values to other types if specified.
                     * @param message DeleteProductRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.DeleteProductRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeleteProductRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeleteProductRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListProductsRequest. */
                interface IListProductsRequest {

                    /** ListProductsRequest parent */
                    parent?: (string|null);

                    /** ListProductsRequest pageSize */
                    pageSize?: (number|null);

                    /** ListProductsRequest pageToken */
                    pageToken?: (string|null);

                    /** ListProductsRequest filter */
                    filter?: (string|null);

                    /** ListProductsRequest readMask */
                    readMask?: (google.protobuf.IFieldMask|null);

                    /** ListProductsRequest requireTotalSize */
                    requireTotalSize?: (boolean|null);
                }

                /** Represents a ListProductsRequest. */
                class ListProductsRequest implements IListProductsRequest {

                    /**
                     * Constructs a new ListProductsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IListProductsRequest);

                    /** ListProductsRequest parent. */
                    public parent: string;

                    /** ListProductsRequest pageSize. */
                    public pageSize: number;

                    /** ListProductsRequest pageToken. */
                    public pageToken: string;

                    /** ListProductsRequest filter. */
                    public filter: string;

                    /** ListProductsRequest readMask. */
                    public readMask?: (google.protobuf.IFieldMask|null);

                    /** ListProductsRequest requireTotalSize. */
                    public requireTotalSize: boolean;

                    /**
                     * Creates a new ListProductsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListProductsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IListProductsRequest): google.cloud.retail.v2alpha.ListProductsRequest;

                    /**
                     * Encodes the specified ListProductsRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.ListProductsRequest.verify|verify} messages.
                     * @param message ListProductsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IListProductsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListProductsRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ListProductsRequest.verify|verify} messages.
                     * @param message ListProductsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IListProductsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListProductsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListProductsRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ListProductsRequest;

                    /**
                     * Decodes a ListProductsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListProductsRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.ListProductsRequest;

                    /**
                     * Verifies a ListProductsRequest message.
                     * @param message Plain 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 ListProductsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListProductsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ListProductsRequest;

                    /**
                     * Creates a plain object from a ListProductsRequest message. Also converts values to other types if specified.
                     * @param message ListProductsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ListProductsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListProductsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListProductsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListProductsResponse. */
                interface IListProductsResponse {

                    /** ListProductsResponse products */
                    products?: (google.cloud.retail.v2alpha.IProduct[]|null);

                    /** ListProductsResponse nextPageToken */
                    nextPageToken?: (string|null);

                    /** ListProductsResponse totalSize */
                    totalSize?: (number|null);
                }

                /** Represents a ListProductsResponse. */
                class ListProductsResponse implements IListProductsResponse {

                    /**
                     * Constructs a new ListProductsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IListProductsResponse);

                    /** ListProductsResponse products. */
                    public products: google.cloud.retail.v2alpha.IProduct[];

                    /** ListProductsResponse nextPageToken. */
                    public nextPageToken: string;

                    /** ListProductsResponse totalSize. */
                    public totalSize: number;

                    /**
                     * Creates a new ListProductsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListProductsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IListProductsResponse): google.cloud.retail.v2alpha.ListProductsResponse;

                    /**
                     * Encodes the specified ListProductsResponse message. Does not implicitly {@link google.cloud.retail.v2alpha.ListProductsResponse.verify|verify} messages.
                     * @param message ListProductsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IListProductsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListProductsResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ListProductsResponse.verify|verify} messages.
                     * @param message ListProductsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IListProductsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListProductsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListProductsResponse
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ListProductsResponse;

                    /**
                     * Decodes a ListProductsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListProductsResponse
                     * @throws {Error} If the payload 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.retail.v2alpha.ListProductsResponse;

                    /**
                     * Verifies a ListProductsResponse message.
                     * @param message Plain 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 ListProductsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListProductsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ListProductsResponse;

                    /**
                     * Creates a plain object from a ListProductsResponse message. Also converts values to other types if specified.
                     * @param message ListProductsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ListProductsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListProductsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListProductsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SetInventoryRequest. */
                interface ISetInventoryRequest {

                    /** SetInventoryRequest inventory */
                    inventory?: (google.cloud.retail.v2alpha.IProduct|null);

                    /** SetInventoryRequest setMask */
                    setMask?: (google.protobuf.IFieldMask|null);

                    /** SetInventoryRequest setTime */
                    setTime?: (google.protobuf.ITimestamp|null);

                    /** SetInventoryRequest allowMissing */
                    allowMissing?: (boolean|null);
                }

                /** Represents a SetInventoryRequest. */
                class SetInventoryRequest implements ISetInventoryRequest {

                    /**
                     * Constructs a new SetInventoryRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.ISetInventoryRequest);

                    /** SetInventoryRequest inventory. */
                    public inventory?: (google.cloud.retail.v2alpha.IProduct|null);

                    /** SetInventoryRequest setMask. */
                    public setMask?: (google.protobuf.IFieldMask|null);

                    /** SetInventoryRequest setTime. */
                    public setTime?: (google.protobuf.ITimestamp|null);

                    /** SetInventoryRequest allowMissing. */
                    public allowMissing: boolean;

                    /**
                     * Creates a new SetInventoryRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SetInventoryRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.ISetInventoryRequest): google.cloud.retail.v2alpha.SetInventoryRequest;

                    /**
                     * Encodes the specified SetInventoryRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.SetInventoryRequest.verify|verify} messages.
                     * @param message SetInventoryRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.ISetInventoryRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SetInventoryRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.SetInventoryRequest.verify|verify} messages.
                     * @param message SetInventoryRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.ISetInventoryRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SetInventoryRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SetInventoryRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.SetInventoryRequest;

                    /**
                     * Decodes a SetInventoryRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SetInventoryRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.SetInventoryRequest;

                    /**
                     * Verifies a SetInventoryRequest message.
                     * @param message Plain 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 SetInventoryRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SetInventoryRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.SetInventoryRequest;

                    /**
                     * Creates a plain object from a SetInventoryRequest message. Also converts values to other types if specified.
                     * @param message SetInventoryRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.SetInventoryRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SetInventoryRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SetInventoryRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SetInventoryMetadata. */
                interface ISetInventoryMetadata {
                }

                /** Represents a SetInventoryMetadata. */
                class SetInventoryMetadata implements ISetInventoryMetadata {

                    /**
                     * Constructs a new SetInventoryMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.ISetInventoryMetadata);

                    /**
                     * Creates a new SetInventoryMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SetInventoryMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.ISetInventoryMetadata): google.cloud.retail.v2alpha.SetInventoryMetadata;

                    /**
                     * Encodes the specified SetInventoryMetadata message. Does not implicitly {@link google.cloud.retail.v2alpha.SetInventoryMetadata.verify|verify} messages.
                     * @param message SetInventoryMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.ISetInventoryMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SetInventoryMetadata message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.SetInventoryMetadata.verify|verify} messages.
                     * @param message SetInventoryMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.ISetInventoryMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SetInventoryMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SetInventoryMetadata
                     * @throws {Error} If the payload is not 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.retail.v2alpha.SetInventoryMetadata;

                    /**
                     * Decodes a SetInventoryMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SetInventoryMetadata
                     * @throws {Error} If the payload 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.retail.v2alpha.SetInventoryMetadata;

                    /**
                     * Verifies a SetInventoryMetadata message.
                     * @param message Plain 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 SetInventoryMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SetInventoryMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.SetInventoryMetadata;

                    /**
                     * Creates a plain object from a SetInventoryMetadata message. Also converts values to other types if specified.
                     * @param message SetInventoryMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.SetInventoryMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SetInventoryMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SetInventoryMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SetInventoryResponse. */
                interface ISetInventoryResponse {
                }

                /** Represents a SetInventoryResponse. */
                class SetInventoryResponse implements ISetInventoryResponse {

                    /**
                     * Constructs a new SetInventoryResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.ISetInventoryResponse);

                    /**
                     * Creates a new SetInventoryResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SetInventoryResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.ISetInventoryResponse): google.cloud.retail.v2alpha.SetInventoryResponse;

                    /**
                     * Encodes the specified SetInventoryResponse message. Does not implicitly {@link google.cloud.retail.v2alpha.SetInventoryResponse.verify|verify} messages.
                     * @param message SetInventoryResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.ISetInventoryResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SetInventoryResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.SetInventoryResponse.verify|verify} messages.
                     * @param message SetInventoryResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.ISetInventoryResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SetInventoryResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SetInventoryResponse
                     * @throws {Error} If the payload is not 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.retail.v2alpha.SetInventoryResponse;

                    /**
                     * Decodes a SetInventoryResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SetInventoryResponse
                     * @throws {Error} If the payload 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.retail.v2alpha.SetInventoryResponse;

                    /**
                     * Verifies a SetInventoryResponse message.
                     * @param message Plain 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 SetInventoryResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SetInventoryResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.SetInventoryResponse;

                    /**
                     * Creates a plain object from a SetInventoryResponse message. Also converts values to other types if specified.
                     * @param message SetInventoryResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.SetInventoryResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SetInventoryResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SetInventoryResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an AddFulfillmentPlacesRequest. */
                interface IAddFulfillmentPlacesRequest {

                    /** AddFulfillmentPlacesRequest product */
                    product?: (string|null);

                    /** AddFulfillmentPlacesRequest type */
                    type?: (string|null);

                    /** AddFulfillmentPlacesRequest placeIds */
                    placeIds?: (string[]|null);

                    /** AddFulfillmentPlacesRequest addTime */
                    addTime?: (google.protobuf.ITimestamp|null);

                    /** AddFulfillmentPlacesRequest allowMissing */
                    allowMissing?: (boolean|null);
                }

                /** Represents an AddFulfillmentPlacesRequest. */
                class AddFulfillmentPlacesRequest implements IAddFulfillmentPlacesRequest {

                    /**
                     * Constructs a new AddFulfillmentPlacesRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IAddFulfillmentPlacesRequest);

                    /** AddFulfillmentPlacesRequest product. */
                    public product: string;

                    /** AddFulfillmentPlacesRequest type. */
                    public type: string;

                    /** AddFulfillmentPlacesRequest placeIds. */
                    public placeIds: string[];

                    /** AddFulfillmentPlacesRequest addTime. */
                    public addTime?: (google.protobuf.ITimestamp|null);

                    /** AddFulfillmentPlacesRequest allowMissing. */
                    public allowMissing: boolean;

                    /**
                     * Creates a new AddFulfillmentPlacesRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns AddFulfillmentPlacesRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IAddFulfillmentPlacesRequest): google.cloud.retail.v2alpha.AddFulfillmentPlacesRequest;

                    /**
                     * Encodes the specified AddFulfillmentPlacesRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.AddFulfillmentPlacesRequest.verify|verify} messages.
                     * @param message AddFulfillmentPlacesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IAddFulfillmentPlacesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified AddFulfillmentPlacesRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.AddFulfillmentPlacesRequest.verify|verify} messages.
                     * @param message AddFulfillmentPlacesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IAddFulfillmentPlacesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an AddFulfillmentPlacesRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns AddFulfillmentPlacesRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.AddFulfillmentPlacesRequest;

                    /**
                     * Decodes an AddFulfillmentPlacesRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns AddFulfillmentPlacesRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.AddFulfillmentPlacesRequest;

                    /**
                     * Verifies an AddFulfillmentPlacesRequest message.
                     * @param message Plain 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 AddFulfillmentPlacesRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns AddFulfillmentPlacesRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.AddFulfillmentPlacesRequest;

                    /**
                     * Creates a plain object from an AddFulfillmentPlacesRequest message. Also converts values to other types if specified.
                     * @param message AddFulfillmentPlacesRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.AddFulfillmentPlacesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this AddFulfillmentPlacesRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for AddFulfillmentPlacesRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an AddFulfillmentPlacesMetadata. */
                interface IAddFulfillmentPlacesMetadata {
                }

                /** Represents an AddFulfillmentPlacesMetadata. */
                class AddFulfillmentPlacesMetadata implements IAddFulfillmentPlacesMetadata {

                    /**
                     * Constructs a new AddFulfillmentPlacesMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IAddFulfillmentPlacesMetadata);

                    /**
                     * Creates a new AddFulfillmentPlacesMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns AddFulfillmentPlacesMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IAddFulfillmentPlacesMetadata): google.cloud.retail.v2alpha.AddFulfillmentPlacesMetadata;

                    /**
                     * Encodes the specified AddFulfillmentPlacesMetadata message. Does not implicitly {@link google.cloud.retail.v2alpha.AddFulfillmentPlacesMetadata.verify|verify} messages.
                     * @param message AddFulfillmentPlacesMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IAddFulfillmentPlacesMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified AddFulfillmentPlacesMetadata message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.AddFulfillmentPlacesMetadata.verify|verify} messages.
                     * @param message AddFulfillmentPlacesMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IAddFulfillmentPlacesMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an AddFulfillmentPlacesMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns AddFulfillmentPlacesMetadata
                     * @throws {Error} If the payload is not 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.retail.v2alpha.AddFulfillmentPlacesMetadata;

                    /**
                     * Decodes an AddFulfillmentPlacesMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns AddFulfillmentPlacesMetadata
                     * @throws {Error} If the payload 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.retail.v2alpha.AddFulfillmentPlacesMetadata;

                    /**
                     * Verifies an AddFulfillmentPlacesMetadata message.
                     * @param message Plain 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 AddFulfillmentPlacesMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns AddFulfillmentPlacesMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.AddFulfillmentPlacesMetadata;

                    /**
                     * Creates a plain object from an AddFulfillmentPlacesMetadata message. Also converts values to other types if specified.
                     * @param message AddFulfillmentPlacesMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.AddFulfillmentPlacesMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this AddFulfillmentPlacesMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for AddFulfillmentPlacesMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an AddFulfillmentPlacesResponse. */
                interface IAddFulfillmentPlacesResponse {
                }

                /** Represents an AddFulfillmentPlacesResponse. */
                class AddFulfillmentPlacesResponse implements IAddFulfillmentPlacesResponse {

                    /**
                     * Constructs a new AddFulfillmentPlacesResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IAddFulfillmentPlacesResponse);

                    /**
                     * Creates a new AddFulfillmentPlacesResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns AddFulfillmentPlacesResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IAddFulfillmentPlacesResponse): google.cloud.retail.v2alpha.AddFulfillmentPlacesResponse;

                    /**
                     * Encodes the specified AddFulfillmentPlacesResponse message. Does not implicitly {@link google.cloud.retail.v2alpha.AddFulfillmentPlacesResponse.verify|verify} messages.
                     * @param message AddFulfillmentPlacesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IAddFulfillmentPlacesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified AddFulfillmentPlacesResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.AddFulfillmentPlacesResponse.verify|verify} messages.
                     * @param message AddFulfillmentPlacesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IAddFulfillmentPlacesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an AddFulfillmentPlacesResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns AddFulfillmentPlacesResponse
                     * @throws {Error} If the payload is not 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.retail.v2alpha.AddFulfillmentPlacesResponse;

                    /**
                     * Decodes an AddFulfillmentPlacesResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns AddFulfillmentPlacesResponse
                     * @throws {Error} If the payload 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.retail.v2alpha.AddFulfillmentPlacesResponse;

                    /**
                     * Verifies an AddFulfillmentPlacesResponse message.
                     * @param message Plain 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 AddFulfillmentPlacesResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns AddFulfillmentPlacesResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.AddFulfillmentPlacesResponse;

                    /**
                     * Creates a plain object from an AddFulfillmentPlacesResponse message. Also converts values to other types if specified.
                     * @param message AddFulfillmentPlacesResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.AddFulfillmentPlacesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this AddFulfillmentPlacesResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for AddFulfillmentPlacesResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an AddLocalInventoriesRequest. */
                interface IAddLocalInventoriesRequest {

                    /** AddLocalInventoriesRequest product */
                    product?: (string|null);

                    /** AddLocalInventoriesRequest localInventories */
                    localInventories?: (google.cloud.retail.v2alpha.ILocalInventory[]|null);

                    /** AddLocalInventoriesRequest addMask */
                    addMask?: (google.protobuf.IFieldMask|null);

                    /** AddLocalInventoriesRequest addTime */
                    addTime?: (google.protobuf.ITimestamp|null);

                    /** AddLocalInventoriesRequest allowMissing */
                    allowMissing?: (boolean|null);
                }

                /** Represents an AddLocalInventoriesRequest. */
                class AddLocalInventoriesRequest implements IAddLocalInventoriesRequest {

                    /**
                     * Constructs a new AddLocalInventoriesRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IAddLocalInventoriesRequest);

                    /** AddLocalInventoriesRequest product. */
                    public product: string;

                    /** AddLocalInventoriesRequest localInventories. */
                    public localInventories: google.cloud.retail.v2alpha.ILocalInventory[];

                    /** AddLocalInventoriesRequest addMask. */
                    public addMask?: (google.protobuf.IFieldMask|null);

                    /** AddLocalInventoriesRequest addTime. */
                    public addTime?: (google.protobuf.ITimestamp|null);

                    /** AddLocalInventoriesRequest allowMissing. */
                    public allowMissing: boolean;

                    /**
                     * Creates a new AddLocalInventoriesRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns AddLocalInventoriesRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IAddLocalInventoriesRequest): google.cloud.retail.v2alpha.AddLocalInventoriesRequest;

                    /**
                     * Encodes the specified AddLocalInventoriesRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.AddLocalInventoriesRequest.verify|verify} messages.
                     * @param message AddLocalInventoriesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IAddLocalInventoriesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified AddLocalInventoriesRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.AddLocalInventoriesRequest.verify|verify} messages.
                     * @param message AddLocalInventoriesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IAddLocalInventoriesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an AddLocalInventoriesRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns AddLocalInventoriesRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.AddLocalInventoriesRequest;

                    /**
                     * Decodes an AddLocalInventoriesRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns AddLocalInventoriesRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.AddLocalInventoriesRequest;

                    /**
                     * Verifies an AddLocalInventoriesRequest message.
                     * @param message Plain 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 AddLocalInventoriesRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns AddLocalInventoriesRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.AddLocalInventoriesRequest;

                    /**
                     * Creates a plain object from an AddLocalInventoriesRequest message. Also converts values to other types if specified.
                     * @param message AddLocalInventoriesRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.AddLocalInventoriesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this AddLocalInventoriesRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for AddLocalInventoriesRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an AddLocalInventoriesMetadata. */
                interface IAddLocalInventoriesMetadata {
                }

                /** Represents an AddLocalInventoriesMetadata. */
                class AddLocalInventoriesMetadata implements IAddLocalInventoriesMetadata {

                    /**
                     * Constructs a new AddLocalInventoriesMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IAddLocalInventoriesMetadata);

                    /**
                     * Creates a new AddLocalInventoriesMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns AddLocalInventoriesMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IAddLocalInventoriesMetadata): google.cloud.retail.v2alpha.AddLocalInventoriesMetadata;

                    /**
                     * Encodes the specified AddLocalInventoriesMetadata message. Does not implicitly {@link google.cloud.retail.v2alpha.AddLocalInventoriesMetadata.verify|verify} messages.
                     * @param message AddLocalInventoriesMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IAddLocalInventoriesMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified AddLocalInventoriesMetadata message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.AddLocalInventoriesMetadata.verify|verify} messages.
                     * @param message AddLocalInventoriesMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IAddLocalInventoriesMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an AddLocalInventoriesMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns AddLocalInventoriesMetadata
                     * @throws {Error} If the payload is not 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.retail.v2alpha.AddLocalInventoriesMetadata;

                    /**
                     * Decodes an AddLocalInventoriesMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns AddLocalInventoriesMetadata
                     * @throws {Error} If the payload 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.retail.v2alpha.AddLocalInventoriesMetadata;

                    /**
                     * Verifies an AddLocalInventoriesMetadata message.
                     * @param message Plain 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 AddLocalInventoriesMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns AddLocalInventoriesMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.AddLocalInventoriesMetadata;

                    /**
                     * Creates a plain object from an AddLocalInventoriesMetadata message. Also converts values to other types if specified.
                     * @param message AddLocalInventoriesMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.AddLocalInventoriesMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this AddLocalInventoriesMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for AddLocalInventoriesMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an AddLocalInventoriesResponse. */
                interface IAddLocalInventoriesResponse {
                }

                /** Represents an AddLocalInventoriesResponse. */
                class AddLocalInventoriesResponse implements IAddLocalInventoriesResponse {

                    /**
                     * Constructs a new AddLocalInventoriesResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IAddLocalInventoriesResponse);

                    /**
                     * Creates a new AddLocalInventoriesResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns AddLocalInventoriesResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IAddLocalInventoriesResponse): google.cloud.retail.v2alpha.AddLocalInventoriesResponse;

                    /**
                     * Encodes the specified AddLocalInventoriesResponse message. Does not implicitly {@link google.cloud.retail.v2alpha.AddLocalInventoriesResponse.verify|verify} messages.
                     * @param message AddLocalInventoriesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IAddLocalInventoriesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified AddLocalInventoriesResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.AddLocalInventoriesResponse.verify|verify} messages.
                     * @param message AddLocalInventoriesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IAddLocalInventoriesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an AddLocalInventoriesResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns AddLocalInventoriesResponse
                     * @throws {Error} If the payload is not 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.retail.v2alpha.AddLocalInventoriesResponse;

                    /**
                     * Decodes an AddLocalInventoriesResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns AddLocalInventoriesResponse
                     * @throws {Error} If the payload 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.retail.v2alpha.AddLocalInventoriesResponse;

                    /**
                     * Verifies an AddLocalInventoriesResponse message.
                     * @param message Plain 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 AddLocalInventoriesResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns AddLocalInventoriesResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.AddLocalInventoriesResponse;

                    /**
                     * Creates a plain object from an AddLocalInventoriesResponse message. Also converts values to other types if specified.
                     * @param message AddLocalInventoriesResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.AddLocalInventoriesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this AddLocalInventoriesResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for AddLocalInventoriesResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RemoveLocalInventoriesRequest. */
                interface IRemoveLocalInventoriesRequest {

                    /** RemoveLocalInventoriesRequest product */
                    product?: (string|null);

                    /** RemoveLocalInventoriesRequest placeIds */
                    placeIds?: (string[]|null);

                    /** RemoveLocalInventoriesRequest removeTime */
                    removeTime?: (google.protobuf.ITimestamp|null);

                    /** RemoveLocalInventoriesRequest allowMissing */
                    allowMissing?: (boolean|null);
                }

                /** Represents a RemoveLocalInventoriesRequest. */
                class RemoveLocalInventoriesRequest implements IRemoveLocalInventoriesRequest {

                    /**
                     * Constructs a new RemoveLocalInventoriesRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IRemoveLocalInventoriesRequest);

                    /** RemoveLocalInventoriesRequest product. */
                    public product: string;

                    /** RemoveLocalInventoriesRequest placeIds. */
                    public placeIds: string[];

                    /** RemoveLocalInventoriesRequest removeTime. */
                    public removeTime?: (google.protobuf.ITimestamp|null);

                    /** RemoveLocalInventoriesRequest allowMissing. */
                    public allowMissing: boolean;

                    /**
                     * Creates a new RemoveLocalInventoriesRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RemoveLocalInventoriesRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IRemoveLocalInventoriesRequest): google.cloud.retail.v2alpha.RemoveLocalInventoriesRequest;

                    /**
                     * Encodes the specified RemoveLocalInventoriesRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.RemoveLocalInventoriesRequest.verify|verify} messages.
                     * @param message RemoveLocalInventoriesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IRemoveLocalInventoriesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RemoveLocalInventoriesRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.RemoveLocalInventoriesRequest.verify|verify} messages.
                     * @param message RemoveLocalInventoriesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IRemoveLocalInventoriesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RemoveLocalInventoriesRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RemoveLocalInventoriesRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.RemoveLocalInventoriesRequest;

                    /**
                     * Decodes a RemoveLocalInventoriesRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RemoveLocalInventoriesRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.RemoveLocalInventoriesRequest;

                    /**
                     * Verifies a RemoveLocalInventoriesRequest message.
                     * @param message Plain 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 RemoveLocalInventoriesRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RemoveLocalInventoriesRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.RemoveLocalInventoriesRequest;

                    /**
                     * Creates a plain object from a RemoveLocalInventoriesRequest message. Also converts values to other types if specified.
                     * @param message RemoveLocalInventoriesRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.RemoveLocalInventoriesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RemoveLocalInventoriesRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RemoveLocalInventoriesRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RemoveLocalInventoriesMetadata. */
                interface IRemoveLocalInventoriesMetadata {
                }

                /** Represents a RemoveLocalInventoriesMetadata. */
                class RemoveLocalInventoriesMetadata implements IRemoveLocalInventoriesMetadata {

                    /**
                     * Constructs a new RemoveLocalInventoriesMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IRemoveLocalInventoriesMetadata);

                    /**
                     * Creates a new RemoveLocalInventoriesMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RemoveLocalInventoriesMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IRemoveLocalInventoriesMetadata): google.cloud.retail.v2alpha.RemoveLocalInventoriesMetadata;

                    /**
                     * Encodes the specified RemoveLocalInventoriesMetadata message. Does not implicitly {@link google.cloud.retail.v2alpha.RemoveLocalInventoriesMetadata.verify|verify} messages.
                     * @param message RemoveLocalInventoriesMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IRemoveLocalInventoriesMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RemoveLocalInventoriesMetadata message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.RemoveLocalInventoriesMetadata.verify|verify} messages.
                     * @param message RemoveLocalInventoriesMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IRemoveLocalInventoriesMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RemoveLocalInventoriesMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RemoveLocalInventoriesMetadata
                     * @throws {Error} If the payload is not 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.retail.v2alpha.RemoveLocalInventoriesMetadata;

                    /**
                     * Decodes a RemoveLocalInventoriesMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RemoveLocalInventoriesMetadata
                     * @throws {Error} If the payload 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.retail.v2alpha.RemoveLocalInventoriesMetadata;

                    /**
                     * Verifies a RemoveLocalInventoriesMetadata message.
                     * @param message Plain 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 RemoveLocalInventoriesMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RemoveLocalInventoriesMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.RemoveLocalInventoriesMetadata;

                    /**
                     * Creates a plain object from a RemoveLocalInventoriesMetadata message. Also converts values to other types if specified.
                     * @param message RemoveLocalInventoriesMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.RemoveLocalInventoriesMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RemoveLocalInventoriesMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RemoveLocalInventoriesMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RemoveLocalInventoriesResponse. */
                interface IRemoveLocalInventoriesResponse {
                }

                /** Represents a RemoveLocalInventoriesResponse. */
                class RemoveLocalInventoriesResponse implements IRemoveLocalInventoriesResponse {

                    /**
                     * Constructs a new RemoveLocalInventoriesResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IRemoveLocalInventoriesResponse);

                    /**
                     * Creates a new RemoveLocalInventoriesResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RemoveLocalInventoriesResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IRemoveLocalInventoriesResponse): google.cloud.retail.v2alpha.RemoveLocalInventoriesResponse;

                    /**
                     * Encodes the specified RemoveLocalInventoriesResponse message. Does not implicitly {@link google.cloud.retail.v2alpha.RemoveLocalInventoriesResponse.verify|verify} messages.
                     * @param message RemoveLocalInventoriesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IRemoveLocalInventoriesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RemoveLocalInventoriesResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.RemoveLocalInventoriesResponse.verify|verify} messages.
                     * @param message RemoveLocalInventoriesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IRemoveLocalInventoriesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RemoveLocalInventoriesResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RemoveLocalInventoriesResponse
                     * @throws {Error} If the payload is not 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.retail.v2alpha.RemoveLocalInventoriesResponse;

                    /**
                     * Decodes a RemoveLocalInventoriesResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RemoveLocalInventoriesResponse
                     * @throws {Error} If the payload 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.retail.v2alpha.RemoveLocalInventoriesResponse;

                    /**
                     * Verifies a RemoveLocalInventoriesResponse message.
                     * @param message Plain 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 RemoveLocalInventoriesResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RemoveLocalInventoriesResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.RemoveLocalInventoriesResponse;

                    /**
                     * Creates a plain object from a RemoveLocalInventoriesResponse message. Also converts values to other types if specified.
                     * @param message RemoveLocalInventoriesResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.RemoveLocalInventoriesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RemoveLocalInventoriesResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RemoveLocalInventoriesResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RemoveFulfillmentPlacesRequest. */
                interface IRemoveFulfillmentPlacesRequest {

                    /** RemoveFulfillmentPlacesRequest product */
                    product?: (string|null);

                    /** RemoveFulfillmentPlacesRequest type */
                    type?: (string|null);

                    /** RemoveFulfillmentPlacesRequest placeIds */
                    placeIds?: (string[]|null);

                    /** RemoveFulfillmentPlacesRequest removeTime */
                    removeTime?: (google.protobuf.ITimestamp|null);

                    /** RemoveFulfillmentPlacesRequest allowMissing */
                    allowMissing?: (boolean|null);
                }

                /** Represents a RemoveFulfillmentPlacesRequest. */
                class RemoveFulfillmentPlacesRequest implements IRemoveFulfillmentPlacesRequest {

                    /**
                     * Constructs a new RemoveFulfillmentPlacesRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IRemoveFulfillmentPlacesRequest);

                    /** RemoveFulfillmentPlacesRequest product. */
                    public product: string;

                    /** RemoveFulfillmentPlacesRequest type. */
                    public type: string;

                    /** RemoveFulfillmentPlacesRequest placeIds. */
                    public placeIds: string[];

                    /** RemoveFulfillmentPlacesRequest removeTime. */
                    public removeTime?: (google.protobuf.ITimestamp|null);

                    /** RemoveFulfillmentPlacesRequest allowMissing. */
                    public allowMissing: boolean;

                    /**
                     * Creates a new RemoveFulfillmentPlacesRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RemoveFulfillmentPlacesRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IRemoveFulfillmentPlacesRequest): google.cloud.retail.v2alpha.RemoveFulfillmentPlacesRequest;

                    /**
                     * Encodes the specified RemoveFulfillmentPlacesRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.RemoveFulfillmentPlacesRequest.verify|verify} messages.
                     * @param message RemoveFulfillmentPlacesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IRemoveFulfillmentPlacesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RemoveFulfillmentPlacesRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.RemoveFulfillmentPlacesRequest.verify|verify} messages.
                     * @param message RemoveFulfillmentPlacesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IRemoveFulfillmentPlacesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RemoveFulfillmentPlacesRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RemoveFulfillmentPlacesRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.RemoveFulfillmentPlacesRequest;

                    /**
                     * Decodes a RemoveFulfillmentPlacesRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RemoveFulfillmentPlacesRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.RemoveFulfillmentPlacesRequest;

                    /**
                     * Verifies a RemoveFulfillmentPlacesRequest message.
                     * @param message Plain 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 RemoveFulfillmentPlacesRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RemoveFulfillmentPlacesRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.RemoveFulfillmentPlacesRequest;

                    /**
                     * Creates a plain object from a RemoveFulfillmentPlacesRequest message. Also converts values to other types if specified.
                     * @param message RemoveFulfillmentPlacesRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.RemoveFulfillmentPlacesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RemoveFulfillmentPlacesRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RemoveFulfillmentPlacesRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RemoveFulfillmentPlacesMetadata. */
                interface IRemoveFulfillmentPlacesMetadata {
                }

                /** Represents a RemoveFulfillmentPlacesMetadata. */
                class RemoveFulfillmentPlacesMetadata implements IRemoveFulfillmentPlacesMetadata {

                    /**
                     * Constructs a new RemoveFulfillmentPlacesMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IRemoveFulfillmentPlacesMetadata);

                    /**
                     * Creates a new RemoveFulfillmentPlacesMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RemoveFulfillmentPlacesMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IRemoveFulfillmentPlacesMetadata): google.cloud.retail.v2alpha.RemoveFulfillmentPlacesMetadata;

                    /**
                     * Encodes the specified RemoveFulfillmentPlacesMetadata message. Does not implicitly {@link google.cloud.retail.v2alpha.RemoveFulfillmentPlacesMetadata.verify|verify} messages.
                     * @param message RemoveFulfillmentPlacesMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IRemoveFulfillmentPlacesMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RemoveFulfillmentPlacesMetadata message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.RemoveFulfillmentPlacesMetadata.verify|verify} messages.
                     * @param message RemoveFulfillmentPlacesMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IRemoveFulfillmentPlacesMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RemoveFulfillmentPlacesMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RemoveFulfillmentPlacesMetadata
                     * @throws {Error} If the payload is not 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.retail.v2alpha.RemoveFulfillmentPlacesMetadata;

                    /**
                     * Decodes a RemoveFulfillmentPlacesMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RemoveFulfillmentPlacesMetadata
                     * @throws {Error} If the payload 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.retail.v2alpha.RemoveFulfillmentPlacesMetadata;

                    /**
                     * Verifies a RemoveFulfillmentPlacesMetadata message.
                     * @param message Plain 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 RemoveFulfillmentPlacesMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RemoveFulfillmentPlacesMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.RemoveFulfillmentPlacesMetadata;

                    /**
                     * Creates a plain object from a RemoveFulfillmentPlacesMetadata message. Also converts values to other types if specified.
                     * @param message RemoveFulfillmentPlacesMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.RemoveFulfillmentPlacesMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RemoveFulfillmentPlacesMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RemoveFulfillmentPlacesMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RemoveFulfillmentPlacesResponse. */
                interface IRemoveFulfillmentPlacesResponse {
                }

                /** Represents a RemoveFulfillmentPlacesResponse. */
                class RemoveFulfillmentPlacesResponse implements IRemoveFulfillmentPlacesResponse {

                    /**
                     * Constructs a new RemoveFulfillmentPlacesResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IRemoveFulfillmentPlacesResponse);

                    /**
                     * Creates a new RemoveFulfillmentPlacesResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RemoveFulfillmentPlacesResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IRemoveFulfillmentPlacesResponse): google.cloud.retail.v2alpha.RemoveFulfillmentPlacesResponse;

                    /**
                     * Encodes the specified RemoveFulfillmentPlacesResponse message. Does not implicitly {@link google.cloud.retail.v2alpha.RemoveFulfillmentPlacesResponse.verify|verify} messages.
                     * @param message RemoveFulfillmentPlacesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IRemoveFulfillmentPlacesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RemoveFulfillmentPlacesResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.RemoveFulfillmentPlacesResponse.verify|verify} messages.
                     * @param message RemoveFulfillmentPlacesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IRemoveFulfillmentPlacesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RemoveFulfillmentPlacesResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RemoveFulfillmentPlacesResponse
                     * @throws {Error} If the payload is not 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.retail.v2alpha.RemoveFulfillmentPlacesResponse;

                    /**
                     * Decodes a RemoveFulfillmentPlacesResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RemoveFulfillmentPlacesResponse
                     * @throws {Error} If the payload 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.retail.v2alpha.RemoveFulfillmentPlacesResponse;

                    /**
                     * Verifies a RemoveFulfillmentPlacesResponse message.
                     * @param message Plain 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 RemoveFulfillmentPlacesResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RemoveFulfillmentPlacesResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.RemoveFulfillmentPlacesResponse;

                    /**
                     * Creates a plain object from a RemoveFulfillmentPlacesResponse message. Also converts values to other types if specified.
                     * @param message RemoveFulfillmentPlacesResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.RemoveFulfillmentPlacesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RemoveFulfillmentPlacesResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RemoveFulfillmentPlacesResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PurgeMetadata. */
                interface IPurgeMetadata {
                }

                /** Represents a PurgeMetadata. */
                class PurgeMetadata implements IPurgeMetadata {

                    /**
                     * Constructs a new PurgeMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IPurgeMetadata);

                    /**
                     * Creates a new PurgeMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PurgeMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IPurgeMetadata): google.cloud.retail.v2alpha.PurgeMetadata;

                    /**
                     * Encodes the specified PurgeMetadata message. Does not implicitly {@link google.cloud.retail.v2alpha.PurgeMetadata.verify|verify} messages.
                     * @param message PurgeMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IPurgeMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PurgeMetadata message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.PurgeMetadata.verify|verify} messages.
                     * @param message PurgeMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IPurgeMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PurgeMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PurgeMetadata
                     * @throws {Error} If the payload is not 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.retail.v2alpha.PurgeMetadata;

                    /**
                     * Decodes a PurgeMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PurgeMetadata
                     * @throws {Error} If the payload 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.retail.v2alpha.PurgeMetadata;

                    /**
                     * Verifies a PurgeMetadata message.
                     * @param message Plain 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 PurgeMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PurgeMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.PurgeMetadata;

                    /**
                     * Creates a plain object from a PurgeMetadata message. Also converts values to other types if specified.
                     * @param message PurgeMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.PurgeMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PurgeMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PurgeMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PurgeProductsMetadata. */
                interface IPurgeProductsMetadata {

                    /** PurgeProductsMetadata createTime */
                    createTime?: (google.protobuf.ITimestamp|null);

                    /** PurgeProductsMetadata updateTime */
                    updateTime?: (google.protobuf.ITimestamp|null);

                    /** PurgeProductsMetadata successCount */
                    successCount?: (number|Long|string|null);

                    /** PurgeProductsMetadata failureCount */
                    failureCount?: (number|Long|string|null);
                }

                /** Represents a PurgeProductsMetadata. */
                class PurgeProductsMetadata implements IPurgeProductsMetadata {

                    /**
                     * Constructs a new PurgeProductsMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IPurgeProductsMetadata);

                    /** PurgeProductsMetadata createTime. */
                    public createTime?: (google.protobuf.ITimestamp|null);

                    /** PurgeProductsMetadata updateTime. */
                    public updateTime?: (google.protobuf.ITimestamp|null);

                    /** PurgeProductsMetadata successCount. */
                    public successCount: (number|Long|string);

                    /** PurgeProductsMetadata failureCount. */
                    public failureCount: (number|Long|string);

                    /**
                     * Creates a new PurgeProductsMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PurgeProductsMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IPurgeProductsMetadata): google.cloud.retail.v2alpha.PurgeProductsMetadata;

                    /**
                     * Encodes the specified PurgeProductsMetadata message. Does not implicitly {@link google.cloud.retail.v2alpha.PurgeProductsMetadata.verify|verify} messages.
                     * @param message PurgeProductsMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IPurgeProductsMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PurgeProductsMetadata message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.PurgeProductsMetadata.verify|verify} messages.
                     * @param message PurgeProductsMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IPurgeProductsMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PurgeProductsMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PurgeProductsMetadata
                     * @throws {Error} If the payload is not 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.retail.v2alpha.PurgeProductsMetadata;

                    /**
                     * Decodes a PurgeProductsMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PurgeProductsMetadata
                     * @throws {Error} If the payload 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.retail.v2alpha.PurgeProductsMetadata;

                    /**
                     * Verifies a PurgeProductsMetadata message.
                     * @param message Plain 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 PurgeProductsMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PurgeProductsMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.PurgeProductsMetadata;

                    /**
                     * Creates a plain object from a PurgeProductsMetadata message. Also converts values to other types if specified.
                     * @param message PurgeProductsMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.PurgeProductsMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PurgeProductsMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PurgeProductsMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PurgeProductsRequest. */
                interface IPurgeProductsRequest {

                    /** PurgeProductsRequest parent */
                    parent?: (string|null);

                    /** PurgeProductsRequest filter */
                    filter?: (string|null);

                    /** PurgeProductsRequest force */
                    force?: (boolean|null);
                }

                /** Represents a PurgeProductsRequest. */
                class PurgeProductsRequest implements IPurgeProductsRequest {

                    /**
                     * Constructs a new PurgeProductsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IPurgeProductsRequest);

                    /** PurgeProductsRequest parent. */
                    public parent: string;

                    /** PurgeProductsRequest filter. */
                    public filter: string;

                    /** PurgeProductsRequest force. */
                    public force: boolean;

                    /**
                     * Creates a new PurgeProductsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PurgeProductsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IPurgeProductsRequest): google.cloud.retail.v2alpha.PurgeProductsRequest;

                    /**
                     * Encodes the specified PurgeProductsRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.PurgeProductsRequest.verify|verify} messages.
                     * @param message PurgeProductsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IPurgeProductsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PurgeProductsRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.PurgeProductsRequest.verify|verify} messages.
                     * @param message PurgeProductsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IPurgeProductsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PurgeProductsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PurgeProductsRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.PurgeProductsRequest;

                    /**
                     * Decodes a PurgeProductsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PurgeProductsRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.PurgeProductsRequest;

                    /**
                     * Verifies a PurgeProductsRequest message.
                     * @param message Plain 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 PurgeProductsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PurgeProductsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.PurgeProductsRequest;

                    /**
                     * Creates a plain object from a PurgeProductsRequest message. Also converts values to other types if specified.
                     * @param message PurgeProductsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.PurgeProductsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PurgeProductsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PurgeProductsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PurgeProductsResponse. */
                interface IPurgeProductsResponse {

                    /** PurgeProductsResponse purgeCount */
                    purgeCount?: (number|Long|string|null);

                    /** PurgeProductsResponse purgeSample */
                    purgeSample?: (string[]|null);
                }

                /** Represents a PurgeProductsResponse. */
                class PurgeProductsResponse implements IPurgeProductsResponse {

                    /**
                     * Constructs a new PurgeProductsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IPurgeProductsResponse);

                    /** PurgeProductsResponse purgeCount. */
                    public purgeCount: (number|Long|string);

                    /** PurgeProductsResponse purgeSample. */
                    public purgeSample: string[];

                    /**
                     * Creates a new PurgeProductsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PurgeProductsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IPurgeProductsResponse): google.cloud.retail.v2alpha.PurgeProductsResponse;

                    /**
                     * Encodes the specified PurgeProductsResponse message. Does not implicitly {@link google.cloud.retail.v2alpha.PurgeProductsResponse.verify|verify} messages.
                     * @param message PurgeProductsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IPurgeProductsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PurgeProductsResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.PurgeProductsResponse.verify|verify} messages.
                     * @param message PurgeProductsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IPurgeProductsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PurgeProductsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PurgeProductsResponse
                     * @throws {Error} If the payload is not 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.retail.v2alpha.PurgeProductsResponse;

                    /**
                     * Decodes a PurgeProductsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PurgeProductsResponse
                     * @throws {Error} If the payload 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.retail.v2alpha.PurgeProductsResponse;

                    /**
                     * Verifies a PurgeProductsResponse message.
                     * @param message Plain 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 PurgeProductsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PurgeProductsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.PurgeProductsResponse;

                    /**
                     * Creates a plain object from a PurgeProductsResponse message. Also converts values to other types if specified.
                     * @param message PurgeProductsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.PurgeProductsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PurgeProductsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PurgeProductsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PurgeUserEventsRequest. */
                interface IPurgeUserEventsRequest {

                    /** PurgeUserEventsRequest parent */
                    parent?: (string|null);

                    /** PurgeUserEventsRequest filter */
                    filter?: (string|null);

                    /** PurgeUserEventsRequest force */
                    force?: (boolean|null);
                }

                /** Represents a PurgeUserEventsRequest. */
                class PurgeUserEventsRequest implements IPurgeUserEventsRequest {

                    /**
                     * Constructs a new PurgeUserEventsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IPurgeUserEventsRequest);

                    /** PurgeUserEventsRequest parent. */
                    public parent: string;

                    /** PurgeUserEventsRequest filter. */
                    public filter: string;

                    /** PurgeUserEventsRequest force. */
                    public force: boolean;

                    /**
                     * Creates a new PurgeUserEventsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PurgeUserEventsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IPurgeUserEventsRequest): google.cloud.retail.v2alpha.PurgeUserEventsRequest;

                    /**
                     * Encodes the specified PurgeUserEventsRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.PurgeUserEventsRequest.verify|verify} messages.
                     * @param message PurgeUserEventsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IPurgeUserEventsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PurgeUserEventsRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.PurgeUserEventsRequest.verify|verify} messages.
                     * @param message PurgeUserEventsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IPurgeUserEventsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PurgeUserEventsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PurgeUserEventsRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.PurgeUserEventsRequest;

                    /**
                     * Decodes a PurgeUserEventsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PurgeUserEventsRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.PurgeUserEventsRequest;

                    /**
                     * Verifies a PurgeUserEventsRequest message.
                     * @param message Plain 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 PurgeUserEventsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PurgeUserEventsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.PurgeUserEventsRequest;

                    /**
                     * Creates a plain object from a PurgeUserEventsRequest message. Also converts values to other types if specified.
                     * @param message PurgeUserEventsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.PurgeUserEventsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PurgeUserEventsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PurgeUserEventsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PurgeUserEventsResponse. */
                interface IPurgeUserEventsResponse {

                    /** PurgeUserEventsResponse purgedEventsCount */
                    purgedEventsCount?: (number|Long|string|null);
                }

                /** Represents a PurgeUserEventsResponse. */
                class PurgeUserEventsResponse implements IPurgeUserEventsResponse {

                    /**
                     * Constructs a new PurgeUserEventsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IPurgeUserEventsResponse);

                    /** PurgeUserEventsResponse purgedEventsCount. */
                    public purgedEventsCount: (number|Long|string);

                    /**
                     * Creates a new PurgeUserEventsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PurgeUserEventsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IPurgeUserEventsResponse): google.cloud.retail.v2alpha.PurgeUserEventsResponse;

                    /**
                     * Encodes the specified PurgeUserEventsResponse message. Does not implicitly {@link google.cloud.retail.v2alpha.PurgeUserEventsResponse.verify|verify} messages.
                     * @param message PurgeUserEventsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IPurgeUserEventsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PurgeUserEventsResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.PurgeUserEventsResponse.verify|verify} messages.
                     * @param message PurgeUserEventsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IPurgeUserEventsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PurgeUserEventsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PurgeUserEventsResponse
                     * @throws {Error} If the payload is not 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.retail.v2alpha.PurgeUserEventsResponse;

                    /**
                     * Decodes a PurgeUserEventsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PurgeUserEventsResponse
                     * @throws {Error} If the payload 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.retail.v2alpha.PurgeUserEventsResponse;

                    /**
                     * Verifies a PurgeUserEventsResponse message.
                     * @param message Plain 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 PurgeUserEventsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PurgeUserEventsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.PurgeUserEventsResponse;

                    /**
                     * Creates a plain object from a PurgeUserEventsResponse message. Also converts values to other types if specified.
                     * @param message PurgeUserEventsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.PurgeUserEventsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PurgeUserEventsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PurgeUserEventsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a LoggingConfig. */
                interface ILoggingConfig {

                    /** LoggingConfig name */
                    name?: (string|null);

                    /** LoggingConfig defaultLogGenerationRule */
                    defaultLogGenerationRule?: (google.cloud.retail.v2alpha.LoggingConfig.ILogGenerationRule|null);

                    /** LoggingConfig serviceLogGenerationRules */
                    serviceLogGenerationRules?: (google.cloud.retail.v2alpha.LoggingConfig.IServiceLogGenerationRule[]|null);
                }

                /** Represents a LoggingConfig. */
                class LoggingConfig implements ILoggingConfig {

                    /**
                     * Constructs a new LoggingConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.ILoggingConfig);

                    /** LoggingConfig name. */
                    public name: string;

                    /** LoggingConfig defaultLogGenerationRule. */
                    public defaultLogGenerationRule?: (google.cloud.retail.v2alpha.LoggingConfig.ILogGenerationRule|null);

                    /** LoggingConfig serviceLogGenerationRules. */
                    public serviceLogGenerationRules: google.cloud.retail.v2alpha.LoggingConfig.IServiceLogGenerationRule[];

                    /**
                     * Creates a new LoggingConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns LoggingConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.ILoggingConfig): google.cloud.retail.v2alpha.LoggingConfig;

                    /**
                     * Encodes the specified LoggingConfig message. Does not implicitly {@link google.cloud.retail.v2alpha.LoggingConfig.verify|verify} messages.
                     * @param message LoggingConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.ILoggingConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified LoggingConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.LoggingConfig.verify|verify} messages.
                     * @param message LoggingConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.ILoggingConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a LoggingConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns LoggingConfig
                     * @throws {Error} If the payload is not 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.retail.v2alpha.LoggingConfig;

                    /**
                     * Decodes a LoggingConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns LoggingConfig
                     * @throws {Error} If the payload 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.retail.v2alpha.LoggingConfig;

                    /**
                     * Verifies a LoggingConfig message.
                     * @param message Plain 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 LoggingConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns LoggingConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.LoggingConfig;

                    /**
                     * Creates a plain object from a LoggingConfig message. Also converts values to other types if specified.
                     * @param message LoggingConfig
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.LoggingConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this LoggingConfig to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for LoggingConfig
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace LoggingConfig {

                    /** Properties of a LogGenerationRule. */
                    interface ILogGenerationRule {

                        /** LogGenerationRule loggingLevel */
                        loggingLevel?: (google.cloud.retail.v2alpha.LoggingConfig.LoggingLevel|keyof typeof google.cloud.retail.v2alpha.LoggingConfig.LoggingLevel|null);

                        /** LogGenerationRule infoLogSampleRate */
                        infoLogSampleRate?: (number|null);
                    }

                    /** Represents a LogGenerationRule. */
                    class LogGenerationRule implements ILogGenerationRule {

                        /**
                         * Constructs a new LogGenerationRule.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.LoggingConfig.ILogGenerationRule);

                        /** LogGenerationRule loggingLevel. */
                        public loggingLevel: (google.cloud.retail.v2alpha.LoggingConfig.LoggingLevel|keyof typeof google.cloud.retail.v2alpha.LoggingConfig.LoggingLevel);

                        /** LogGenerationRule infoLogSampleRate. */
                        public infoLogSampleRate?: (number|null);

                        /**
                         * Creates a new LogGenerationRule instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns LogGenerationRule instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.LoggingConfig.ILogGenerationRule): google.cloud.retail.v2alpha.LoggingConfig.LogGenerationRule;

                        /**
                         * Encodes the specified LogGenerationRule message. Does not implicitly {@link google.cloud.retail.v2alpha.LoggingConfig.LogGenerationRule.verify|verify} messages.
                         * @param message LogGenerationRule message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.LoggingConfig.ILogGenerationRule, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified LogGenerationRule message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.LoggingConfig.LogGenerationRule.verify|verify} messages.
                         * @param message LogGenerationRule message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.LoggingConfig.ILogGenerationRule, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a LogGenerationRule message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns LogGenerationRule
                         * @throws {Error} If the payload is not 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.retail.v2alpha.LoggingConfig.LogGenerationRule;

                        /**
                         * Decodes a LogGenerationRule message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns LogGenerationRule
                         * @throws {Error} If the payload 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.retail.v2alpha.LoggingConfig.LogGenerationRule;

                        /**
                         * Verifies a LogGenerationRule message.
                         * @param message Plain 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 LogGenerationRule message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns LogGenerationRule
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.LoggingConfig.LogGenerationRule;

                        /**
                         * Creates a plain object from a LogGenerationRule message. Also converts values to other types if specified.
                         * @param message LogGenerationRule
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.LoggingConfig.LogGenerationRule, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this LogGenerationRule to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for LogGenerationRule
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ServiceLogGenerationRule. */
                    interface IServiceLogGenerationRule {

                        /** ServiceLogGenerationRule serviceName */
                        serviceName?: (string|null);

                        /** ServiceLogGenerationRule logGenerationRule */
                        logGenerationRule?: (google.cloud.retail.v2alpha.LoggingConfig.ILogGenerationRule|null);
                    }

                    /** Represents a ServiceLogGenerationRule. */
                    class ServiceLogGenerationRule implements IServiceLogGenerationRule {

                        /**
                         * Constructs a new ServiceLogGenerationRule.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.LoggingConfig.IServiceLogGenerationRule);

                        /** ServiceLogGenerationRule serviceName. */
                        public serviceName: string;

                        /** ServiceLogGenerationRule logGenerationRule. */
                        public logGenerationRule?: (google.cloud.retail.v2alpha.LoggingConfig.ILogGenerationRule|null);

                        /**
                         * Creates a new ServiceLogGenerationRule instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ServiceLogGenerationRule instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.LoggingConfig.IServiceLogGenerationRule): google.cloud.retail.v2alpha.LoggingConfig.ServiceLogGenerationRule;

                        /**
                         * Encodes the specified ServiceLogGenerationRule message. Does not implicitly {@link google.cloud.retail.v2alpha.LoggingConfig.ServiceLogGenerationRule.verify|verify} messages.
                         * @param message ServiceLogGenerationRule message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.LoggingConfig.IServiceLogGenerationRule, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ServiceLogGenerationRule message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.LoggingConfig.ServiceLogGenerationRule.verify|verify} messages.
                         * @param message ServiceLogGenerationRule message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.LoggingConfig.IServiceLogGenerationRule, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ServiceLogGenerationRule message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ServiceLogGenerationRule
                         * @throws {Error} If the payload is not 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.retail.v2alpha.LoggingConfig.ServiceLogGenerationRule;

                        /**
                         * Decodes a ServiceLogGenerationRule message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ServiceLogGenerationRule
                         * @throws {Error} If the payload 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.retail.v2alpha.LoggingConfig.ServiceLogGenerationRule;

                        /**
                         * Verifies a ServiceLogGenerationRule message.
                         * @param message Plain 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 ServiceLogGenerationRule message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ServiceLogGenerationRule
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.LoggingConfig.ServiceLogGenerationRule;

                        /**
                         * Creates a plain object from a ServiceLogGenerationRule message. Also converts values to other types if specified.
                         * @param message ServiceLogGenerationRule
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.LoggingConfig.ServiceLogGenerationRule, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ServiceLogGenerationRule to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ServiceLogGenerationRule
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** LoggingLevel enum. */
                    enum LoggingLevel {
                        LOGGING_LEVEL_UNSPECIFIED = 0,
                        LOGGING_DISABLED = 1,
                        LOG_ERRORS_AND_ABOVE = 2,
                        LOG_WARNINGS_AND_ABOVE = 3,
                        LOG_ALL = 4
                    }
                }

                /** Properties of a Project. */
                interface IProject {

                    /** Project name */
                    name?: (string|null);

                    /** Project enrolledSolutions */
                    enrolledSolutions?: (google.cloud.retail.v2alpha.SolutionType[]|null);
                }

                /** Represents a Project. */
                class Project implements IProject {

                    /**
                     * Constructs a new Project.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IProject);

                    /** Project name. */
                    public name: string;

                    /** Project enrolledSolutions. */
                    public enrolledSolutions: google.cloud.retail.v2alpha.SolutionType[];

                    /**
                     * Creates a new Project instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Project instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IProject): google.cloud.retail.v2alpha.Project;

                    /**
                     * Encodes the specified Project message. Does not implicitly {@link google.cloud.retail.v2alpha.Project.verify|verify} messages.
                     * @param message Project message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IProject, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Project message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.Project.verify|verify} messages.
                     * @param message Project message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IProject, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Project message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Project
                     * @throws {Error} If the payload is not 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.retail.v2alpha.Project;

                    /**
                     * Decodes a Project message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Project
                     * @throws {Error} If the payload 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.retail.v2alpha.Project;

                    /**
                     * Verifies a Project message.
                     * @param message Plain 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 Project message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Project
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.Project;

                    /**
                     * Creates a plain object from a Project message. Also converts values to other types if specified.
                     * @param message Project
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.Project, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Project to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Project
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an AlertConfig. */
                interface IAlertConfig {

                    /** AlertConfig name */
                    name?: (string|null);

                    /** AlertConfig alertPolicies */
                    alertPolicies?: (google.cloud.retail.v2alpha.AlertConfig.IAlertPolicy[]|null);
                }

                /** Represents an AlertConfig. */
                class AlertConfig implements IAlertConfig {

                    /**
                     * Constructs a new AlertConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IAlertConfig);

                    /** AlertConfig name. */
                    public name: string;

                    /** AlertConfig alertPolicies. */
                    public alertPolicies: google.cloud.retail.v2alpha.AlertConfig.IAlertPolicy[];

                    /**
                     * Creates a new AlertConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns AlertConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IAlertConfig): google.cloud.retail.v2alpha.AlertConfig;

                    /**
                     * Encodes the specified AlertConfig message. Does not implicitly {@link google.cloud.retail.v2alpha.AlertConfig.verify|verify} messages.
                     * @param message AlertConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IAlertConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified AlertConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.AlertConfig.verify|verify} messages.
                     * @param message AlertConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IAlertConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an AlertConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns AlertConfig
                     * @throws {Error} If the payload is not 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.retail.v2alpha.AlertConfig;

                    /**
                     * Decodes an AlertConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns AlertConfig
                     * @throws {Error} If the payload 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.retail.v2alpha.AlertConfig;

                    /**
                     * Verifies an AlertConfig message.
                     * @param message Plain 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 AlertConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns AlertConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.AlertConfig;

                    /**
                     * Creates a plain object from an AlertConfig message. Also converts values to other types if specified.
                     * @param message AlertConfig
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.AlertConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this AlertConfig to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for AlertConfig
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace AlertConfig {

                    /** Properties of an AlertPolicy. */
                    interface IAlertPolicy {

                        /** AlertPolicy alertGroup */
                        alertGroup?: (string|null);

                        /** AlertPolicy enrollStatus */
                        enrollStatus?: (google.cloud.retail.v2alpha.AlertConfig.AlertPolicy.EnrollStatus|keyof typeof google.cloud.retail.v2alpha.AlertConfig.AlertPolicy.EnrollStatus|null);

                        /** AlertPolicy recipients */
                        recipients?: (google.cloud.retail.v2alpha.AlertConfig.AlertPolicy.IRecipient[]|null);
                    }

                    /** Represents an AlertPolicy. */
                    class AlertPolicy implements IAlertPolicy {

                        /**
                         * Constructs a new AlertPolicy.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2alpha.AlertConfig.IAlertPolicy);

                        /** AlertPolicy alertGroup. */
                        public alertGroup: string;

                        /** AlertPolicy enrollStatus. */
                        public enrollStatus: (google.cloud.retail.v2alpha.AlertConfig.AlertPolicy.EnrollStatus|keyof typeof google.cloud.retail.v2alpha.AlertConfig.AlertPolicy.EnrollStatus);

                        /** AlertPolicy recipients. */
                        public recipients: google.cloud.retail.v2alpha.AlertConfig.AlertPolicy.IRecipient[];

                        /**
                         * Creates a new AlertPolicy instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AlertPolicy instance
                         */
                        public static create(properties?: google.cloud.retail.v2alpha.AlertConfig.IAlertPolicy): google.cloud.retail.v2alpha.AlertConfig.AlertPolicy;

                        /**
                         * Encodes the specified AlertPolicy message. Does not implicitly {@link google.cloud.retail.v2alpha.AlertConfig.AlertPolicy.verify|verify} messages.
                         * @param message AlertPolicy message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2alpha.AlertConfig.IAlertPolicy, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AlertPolicy message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.AlertConfig.AlertPolicy.verify|verify} messages.
                         * @param message AlertPolicy message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2alpha.AlertConfig.IAlertPolicy, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AlertPolicy message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AlertPolicy
                         * @throws {Error} If the payload is not 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.retail.v2alpha.AlertConfig.AlertPolicy;

                        /**
                         * Decodes an AlertPolicy message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AlertPolicy
                         * @throws {Error} If the payload 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.retail.v2alpha.AlertConfig.AlertPolicy;

                        /**
                         * Verifies an AlertPolicy message.
                         * @param message Plain 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 AlertPolicy message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AlertPolicy
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.AlertConfig.AlertPolicy;

                        /**
                         * Creates a plain object from an AlertPolicy message. Also converts values to other types if specified.
                         * @param message AlertPolicy
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2alpha.AlertConfig.AlertPolicy, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AlertPolicy to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AlertPolicy
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AlertPolicy {

                        /** Properties of a Recipient. */
                        interface IRecipient {

                            /** Recipient emailAddress */
                            emailAddress?: (string|null);
                        }

                        /** Represents a Recipient. */
                        class Recipient implements IRecipient {

                            /**
                             * Constructs a new Recipient.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2alpha.AlertConfig.AlertPolicy.IRecipient);

                            /** Recipient emailAddress. */
                            public emailAddress: string;

                            /**
                             * Creates a new Recipient instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns Recipient instance
                             */
                            public static create(properties?: google.cloud.retail.v2alpha.AlertConfig.AlertPolicy.IRecipient): google.cloud.retail.v2alpha.AlertConfig.AlertPolicy.Recipient;

                            /**
                             * Encodes the specified Recipient message. Does not implicitly {@link google.cloud.retail.v2alpha.AlertConfig.AlertPolicy.Recipient.verify|verify} messages.
                             * @param message Recipient message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.retail.v2alpha.AlertConfig.AlertPolicy.IRecipient, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified Recipient message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.AlertConfig.AlertPolicy.Recipient.verify|verify} messages.
                             * @param message Recipient message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.retail.v2alpha.AlertConfig.AlertPolicy.IRecipient, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a Recipient message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns Recipient
                             * @throws {Error} If the payload is not 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.retail.v2alpha.AlertConfig.AlertPolicy.Recipient;

                            /**
                             * Decodes a Recipient message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns Recipient
                             * @throws {Error} If the payload 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.retail.v2alpha.AlertConfig.AlertPolicy.Recipient;

                            /**
                             * Verifies a Recipient message.
                             * @param message Plain 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 Recipient message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns Recipient
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.AlertConfig.AlertPolicy.Recipient;

                            /**
                             * Creates a plain object from a Recipient message. Also converts values to other types if specified.
                             * @param message Recipient
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.retail.v2alpha.AlertConfig.AlertPolicy.Recipient, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this Recipient to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for Recipient
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** EnrollStatus enum. */
                        enum EnrollStatus {
                            ENROLL_STATUS_UNSPECIFIED = 0,
                            ENROLLED = 1,
                            DECLINED = 2
                        }
                    }
                }

                /** Represents a ProjectService */
                class ProjectService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new ProjectService 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 ProjectService 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): ProjectService;

                    /**
                     * Calls GetProject.
                     * @param request GetProjectRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Project
                     */
                    public getProject(request: google.cloud.retail.v2alpha.IGetProjectRequest, callback: google.cloud.retail.v2alpha.ProjectService.GetProjectCallback): void;

                    /**
                     * Calls GetProject.
                     * @param request GetProjectRequest message or plain object
                     * @returns Promise
                     */
                    public getProject(request: google.cloud.retail.v2alpha.IGetProjectRequest): Promise<google.cloud.retail.v2alpha.Project>;

                    /**
                     * Calls AcceptTerms.
                     * @param request AcceptTermsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Project
                     */
                    public acceptTerms(request: google.cloud.retail.v2alpha.IAcceptTermsRequest, callback: google.cloud.retail.v2alpha.ProjectService.AcceptTermsCallback): void;

                    /**
                     * Calls AcceptTerms.
                     * @param request AcceptTermsRequest message or plain object
                     * @returns Promise
                     */
                    public acceptTerms(request: google.cloud.retail.v2alpha.IAcceptTermsRequest): Promise<google.cloud.retail.v2alpha.Project>;

                    /**
                     * Calls EnrollSolution.
                     * @param request EnrollSolutionRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public enrollSolution(request: google.cloud.retail.v2alpha.IEnrollSolutionRequest, callback: google.cloud.retail.v2alpha.ProjectService.EnrollSolutionCallback): void;

                    /**
                     * Calls EnrollSolution.
                     * @param request EnrollSolutionRequest message or plain object
                     * @returns Promise
                     */
                    public enrollSolution(request: google.cloud.retail.v2alpha.IEnrollSolutionRequest): Promise<google.longrunning.Operation>;

                    /**
                     * Calls ListEnrolledSolutions.
                     * @param request ListEnrolledSolutionsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListEnrolledSolutionsResponse
                     */
                    public listEnrolledSolutions(request: google.cloud.retail.v2alpha.IListEnrolledSolutionsRequest, callback: google.cloud.retail.v2alpha.ProjectService.ListEnrolledSolutionsCallback): void;

                    /**
                     * Calls ListEnrolledSolutions.
                     * @param request ListEnrolledSolutionsRequest message or plain object
                     * @returns Promise
                     */
                    public listEnrolledSolutions(request: google.cloud.retail.v2alpha.IListEnrolledSolutionsRequest): Promise<google.cloud.retail.v2alpha.ListEnrolledSolutionsResponse>;

                    /**
                     * Calls GetLoggingConfig.
                     * @param request GetLoggingConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and LoggingConfig
                     */
                    public getLoggingConfig(request: google.cloud.retail.v2alpha.IGetLoggingConfigRequest, callback: google.cloud.retail.v2alpha.ProjectService.GetLoggingConfigCallback): void;

                    /**
                     * Calls GetLoggingConfig.
                     * @param request GetLoggingConfigRequest message or plain object
                     * @returns Promise
                     */
                    public getLoggingConfig(request: google.cloud.retail.v2alpha.IGetLoggingConfigRequest): Promise<google.cloud.retail.v2alpha.LoggingConfig>;

                    /**
                     * Calls UpdateLoggingConfig.
                     * @param request UpdateLoggingConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and LoggingConfig
                     */
                    public updateLoggingConfig(request: google.cloud.retail.v2alpha.IUpdateLoggingConfigRequest, callback: google.cloud.retail.v2alpha.ProjectService.UpdateLoggingConfigCallback): void;

                    /**
                     * Calls UpdateLoggingConfig.
                     * @param request UpdateLoggingConfigRequest message or plain object
                     * @returns Promise
                     */
                    public updateLoggingConfig(request: google.cloud.retail.v2alpha.IUpdateLoggingConfigRequest): Promise<google.cloud.retail.v2alpha.LoggingConfig>;

                    /**
                     * Calls GetAlertConfig.
                     * @param request GetAlertConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and AlertConfig
                     */
                    public getAlertConfig(request: google.cloud.retail.v2alpha.IGetAlertConfigRequest, callback: google.cloud.retail.v2alpha.ProjectService.GetAlertConfigCallback): void;

                    /**
                     * Calls GetAlertConfig.
                     * @param request GetAlertConfigRequest message or plain object
                     * @returns Promise
                     */
                    public getAlertConfig(request: google.cloud.retail.v2alpha.IGetAlertConfigRequest): Promise<google.cloud.retail.v2alpha.AlertConfig>;

                    /**
                     * Calls UpdateAlertConfig.
                     * @param request UpdateAlertConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and AlertConfig
                     */
                    public updateAlertConfig(request: google.cloud.retail.v2alpha.IUpdateAlertConfigRequest, callback: google.cloud.retail.v2alpha.ProjectService.UpdateAlertConfigCallback): void;

                    /**
                     * Calls UpdateAlertConfig.
                     * @param request UpdateAlertConfigRequest message or plain object
                     * @returns Promise
                     */
                    public updateAlertConfig(request: google.cloud.retail.v2alpha.IUpdateAlertConfigRequest): Promise<google.cloud.retail.v2alpha.AlertConfig>;
                }

                namespace ProjectService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ProjectService|getProject}.
                     * @param error Error, if any
                     * @param [response] Project
                     */
                    type GetProjectCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.Project) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ProjectService|acceptTerms}.
                     * @param error Error, if any
                     * @param [response] Project
                     */
                    type AcceptTermsCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.Project) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ProjectService|enrollSolution}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type EnrollSolutionCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ProjectService|listEnrolledSolutions}.
                     * @param error Error, if any
                     * @param [response] ListEnrolledSolutionsResponse
                     */
                    type ListEnrolledSolutionsCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.ListEnrolledSolutionsResponse) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ProjectService|getLoggingConfig}.
                     * @param error Error, if any
                     * @param [response] LoggingConfig
                     */
                    type GetLoggingConfigCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.LoggingConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ProjectService|updateLoggingConfig}.
                     * @param error Error, if any
                     * @param [response] LoggingConfig
                     */
                    type UpdateLoggingConfigCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.LoggingConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ProjectService|getAlertConfig}.
                     * @param error Error, if any
                     * @param [response] AlertConfig
                     */
                    type GetAlertConfigCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.AlertConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ProjectService|updateAlertConfig}.
                     * @param error Error, if any
                     * @param [response] AlertConfig
                     */
                    type UpdateAlertConfigCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.AlertConfig) => void;
                }

                /** Properties of a GetProjectRequest. */
                interface IGetProjectRequest {

                    /** GetProjectRequest name */
                    name?: (string|null);
                }

                /** Represents a GetProjectRequest. */
                class GetProjectRequest implements IGetProjectRequest {

                    /**
                     * Constructs a new GetProjectRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IGetProjectRequest);

                    /** GetProjectRequest name. */
                    public name: string;

                    /**
                     * Creates a new GetProjectRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetProjectRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IGetProjectRequest): google.cloud.retail.v2alpha.GetProjectRequest;

                    /**
                     * Encodes the specified GetProjectRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.GetProjectRequest.verify|verify} messages.
                     * @param message GetProjectRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IGetProjectRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetProjectRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.GetProjectRequest.verify|verify} messages.
                     * @param message GetProjectRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IGetProjectRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetProjectRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetProjectRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.GetProjectRequest;

                    /**
                     * Decodes a GetProjectRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetProjectRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.GetProjectRequest;

                    /**
                     * Verifies a GetProjectRequest message.
                     * @param message Plain 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 GetProjectRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetProjectRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.GetProjectRequest;

                    /**
                     * Creates a plain object from a GetProjectRequest message. Also converts values to other types if specified.
                     * @param message GetProjectRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.GetProjectRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetProjectRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetProjectRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an AcceptTermsRequest. */
                interface IAcceptTermsRequest {

                    /** AcceptTermsRequest project */
                    project?: (string|null);
                }

                /** Represents an AcceptTermsRequest. */
                class AcceptTermsRequest implements IAcceptTermsRequest {

                    /**
                     * Constructs a new AcceptTermsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IAcceptTermsRequest);

                    /** AcceptTermsRequest project. */
                    public project: string;

                    /**
                     * Creates a new AcceptTermsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns AcceptTermsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IAcceptTermsRequest): google.cloud.retail.v2alpha.AcceptTermsRequest;

                    /**
                     * Encodes the specified AcceptTermsRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.AcceptTermsRequest.verify|verify} messages.
                     * @param message AcceptTermsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IAcceptTermsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified AcceptTermsRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.AcceptTermsRequest.verify|verify} messages.
                     * @param message AcceptTermsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IAcceptTermsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an AcceptTermsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns AcceptTermsRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.AcceptTermsRequest;

                    /**
                     * Decodes an AcceptTermsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns AcceptTermsRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.AcceptTermsRequest;

                    /**
                     * Verifies an AcceptTermsRequest message.
                     * @param message Plain 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 AcceptTermsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns AcceptTermsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.AcceptTermsRequest;

                    /**
                     * Creates a plain object from an AcceptTermsRequest message. Also converts values to other types if specified.
                     * @param message AcceptTermsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.AcceptTermsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this AcceptTermsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for AcceptTermsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an EnrollSolutionRequest. */
                interface IEnrollSolutionRequest {

                    /** EnrollSolutionRequest project */
                    project?: (string|null);

                    /** EnrollSolutionRequest solution */
                    solution?: (google.cloud.retail.v2alpha.SolutionType|keyof typeof google.cloud.retail.v2alpha.SolutionType|null);
                }

                /** Represents an EnrollSolutionRequest. */
                class EnrollSolutionRequest implements IEnrollSolutionRequest {

                    /**
                     * Constructs a new EnrollSolutionRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IEnrollSolutionRequest);

                    /** EnrollSolutionRequest project. */
                    public project: string;

                    /** EnrollSolutionRequest solution. */
                    public solution: (google.cloud.retail.v2alpha.SolutionType|keyof typeof google.cloud.retail.v2alpha.SolutionType);

                    /**
                     * Creates a new EnrollSolutionRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns EnrollSolutionRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IEnrollSolutionRequest): google.cloud.retail.v2alpha.EnrollSolutionRequest;

                    /**
                     * Encodes the specified EnrollSolutionRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.EnrollSolutionRequest.verify|verify} messages.
                     * @param message EnrollSolutionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IEnrollSolutionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified EnrollSolutionRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.EnrollSolutionRequest.verify|verify} messages.
                     * @param message EnrollSolutionRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IEnrollSolutionRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an EnrollSolutionRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns EnrollSolutionRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.EnrollSolutionRequest;

                    /**
                     * Decodes an EnrollSolutionRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns EnrollSolutionRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.EnrollSolutionRequest;

                    /**
                     * Verifies an EnrollSolutionRequest message.
                     * @param message Plain 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 EnrollSolutionRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns EnrollSolutionRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.EnrollSolutionRequest;

                    /**
                     * Creates a plain object from an EnrollSolutionRequest message. Also converts values to other types if specified.
                     * @param message EnrollSolutionRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.EnrollSolutionRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this EnrollSolutionRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for EnrollSolutionRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an EnrollSolutionResponse. */
                interface IEnrollSolutionResponse {

                    /** EnrollSolutionResponse enrolledSolution */
                    enrolledSolution?: (google.cloud.retail.v2alpha.SolutionType|keyof typeof google.cloud.retail.v2alpha.SolutionType|null);
                }

                /** Represents an EnrollSolutionResponse. */
                class EnrollSolutionResponse implements IEnrollSolutionResponse {

                    /**
                     * Constructs a new EnrollSolutionResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IEnrollSolutionResponse);

                    /** EnrollSolutionResponse enrolledSolution. */
                    public enrolledSolution: (google.cloud.retail.v2alpha.SolutionType|keyof typeof google.cloud.retail.v2alpha.SolutionType);

                    /**
                     * Creates a new EnrollSolutionResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns EnrollSolutionResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IEnrollSolutionResponse): google.cloud.retail.v2alpha.EnrollSolutionResponse;

                    /**
                     * Encodes the specified EnrollSolutionResponse message. Does not implicitly {@link google.cloud.retail.v2alpha.EnrollSolutionResponse.verify|verify} messages.
                     * @param message EnrollSolutionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IEnrollSolutionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified EnrollSolutionResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.EnrollSolutionResponse.verify|verify} messages.
                     * @param message EnrollSolutionResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IEnrollSolutionResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an EnrollSolutionResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns EnrollSolutionResponse
                     * @throws {Error} If the payload is not 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.retail.v2alpha.EnrollSolutionResponse;

                    /**
                     * Decodes an EnrollSolutionResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns EnrollSolutionResponse
                     * @throws {Error} If the payload 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.retail.v2alpha.EnrollSolutionResponse;

                    /**
                     * Verifies an EnrollSolutionResponse message.
                     * @param message Plain 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 EnrollSolutionResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns EnrollSolutionResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.EnrollSolutionResponse;

                    /**
                     * Creates a plain object from an EnrollSolutionResponse message. Also converts values to other types if specified.
                     * @param message EnrollSolutionResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.EnrollSolutionResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this EnrollSolutionResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for EnrollSolutionResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an EnrollSolutionMetadata. */
                interface IEnrollSolutionMetadata {
                }

                /** Represents an EnrollSolutionMetadata. */
                class EnrollSolutionMetadata implements IEnrollSolutionMetadata {

                    /**
                     * Constructs a new EnrollSolutionMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IEnrollSolutionMetadata);

                    /**
                     * Creates a new EnrollSolutionMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns EnrollSolutionMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IEnrollSolutionMetadata): google.cloud.retail.v2alpha.EnrollSolutionMetadata;

                    /**
                     * Encodes the specified EnrollSolutionMetadata message. Does not implicitly {@link google.cloud.retail.v2alpha.EnrollSolutionMetadata.verify|verify} messages.
                     * @param message EnrollSolutionMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IEnrollSolutionMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified EnrollSolutionMetadata message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.EnrollSolutionMetadata.verify|verify} messages.
                     * @param message EnrollSolutionMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IEnrollSolutionMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an EnrollSolutionMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns EnrollSolutionMetadata
                     * @throws {Error} If the payload is not 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.retail.v2alpha.EnrollSolutionMetadata;

                    /**
                     * Decodes an EnrollSolutionMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns EnrollSolutionMetadata
                     * @throws {Error} If the payload 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.retail.v2alpha.EnrollSolutionMetadata;

                    /**
                     * Verifies an EnrollSolutionMetadata message.
                     * @param message Plain 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 EnrollSolutionMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns EnrollSolutionMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.EnrollSolutionMetadata;

                    /**
                     * Creates a plain object from an EnrollSolutionMetadata message. Also converts values to other types if specified.
                     * @param message EnrollSolutionMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.EnrollSolutionMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this EnrollSolutionMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for EnrollSolutionMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListEnrolledSolutionsRequest. */
                interface IListEnrolledSolutionsRequest {

                    /** ListEnrolledSolutionsRequest parent */
                    parent?: (string|null);
                }

                /** Represents a ListEnrolledSolutionsRequest. */
                class ListEnrolledSolutionsRequest implements IListEnrolledSolutionsRequest {

                    /**
                     * Constructs a new ListEnrolledSolutionsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IListEnrolledSolutionsRequest);

                    /** ListEnrolledSolutionsRequest parent. */
                    public parent: string;

                    /**
                     * Creates a new ListEnrolledSolutionsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListEnrolledSolutionsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IListEnrolledSolutionsRequest): google.cloud.retail.v2alpha.ListEnrolledSolutionsRequest;

                    /**
                     * Encodes the specified ListEnrolledSolutionsRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.ListEnrolledSolutionsRequest.verify|verify} messages.
                     * @param message ListEnrolledSolutionsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IListEnrolledSolutionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListEnrolledSolutionsRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ListEnrolledSolutionsRequest.verify|verify} messages.
                     * @param message ListEnrolledSolutionsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IListEnrolledSolutionsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListEnrolledSolutionsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListEnrolledSolutionsRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ListEnrolledSolutionsRequest;

                    /**
                     * Decodes a ListEnrolledSolutionsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListEnrolledSolutionsRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.ListEnrolledSolutionsRequest;

                    /**
                     * Verifies a ListEnrolledSolutionsRequest message.
                     * @param message Plain 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 ListEnrolledSolutionsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListEnrolledSolutionsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ListEnrolledSolutionsRequest;

                    /**
                     * Creates a plain object from a ListEnrolledSolutionsRequest message. Also converts values to other types if specified.
                     * @param message ListEnrolledSolutionsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ListEnrolledSolutionsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListEnrolledSolutionsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListEnrolledSolutionsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListEnrolledSolutionsResponse. */
                interface IListEnrolledSolutionsResponse {

                    /** ListEnrolledSolutionsResponse enrolledSolutions */
                    enrolledSolutions?: (google.cloud.retail.v2alpha.SolutionType[]|null);
                }

                /** Represents a ListEnrolledSolutionsResponse. */
                class ListEnrolledSolutionsResponse implements IListEnrolledSolutionsResponse {

                    /**
                     * Constructs a new ListEnrolledSolutionsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IListEnrolledSolutionsResponse);

                    /** ListEnrolledSolutionsResponse enrolledSolutions. */
                    public enrolledSolutions: google.cloud.retail.v2alpha.SolutionType[];

                    /**
                     * Creates a new ListEnrolledSolutionsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListEnrolledSolutionsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IListEnrolledSolutionsResponse): google.cloud.retail.v2alpha.ListEnrolledSolutionsResponse;

                    /**
                     * Encodes the specified ListEnrolledSolutionsResponse message. Does not implicitly {@link google.cloud.retail.v2alpha.ListEnrolledSolutionsResponse.verify|verify} messages.
                     * @param message ListEnrolledSolutionsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IListEnrolledSolutionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListEnrolledSolutionsResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ListEnrolledSolutionsResponse.verify|verify} messages.
                     * @param message ListEnrolledSolutionsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IListEnrolledSolutionsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListEnrolledSolutionsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListEnrolledSolutionsResponse
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ListEnrolledSolutionsResponse;

                    /**
                     * Decodes a ListEnrolledSolutionsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListEnrolledSolutionsResponse
                     * @throws {Error} If the payload 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.retail.v2alpha.ListEnrolledSolutionsResponse;

                    /**
                     * Verifies a ListEnrolledSolutionsResponse message.
                     * @param message Plain 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 ListEnrolledSolutionsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListEnrolledSolutionsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ListEnrolledSolutionsResponse;

                    /**
                     * Creates a plain object from a ListEnrolledSolutionsResponse message. Also converts values to other types if specified.
                     * @param message ListEnrolledSolutionsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ListEnrolledSolutionsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListEnrolledSolutionsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListEnrolledSolutionsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetLoggingConfigRequest. */
                interface IGetLoggingConfigRequest {

                    /** GetLoggingConfigRequest name */
                    name?: (string|null);
                }

                /** Represents a GetLoggingConfigRequest. */
                class GetLoggingConfigRequest implements IGetLoggingConfigRequest {

                    /**
                     * Constructs a new GetLoggingConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IGetLoggingConfigRequest);

                    /** GetLoggingConfigRequest name. */
                    public name: string;

                    /**
                     * Creates a new GetLoggingConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetLoggingConfigRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IGetLoggingConfigRequest): google.cloud.retail.v2alpha.GetLoggingConfigRequest;

                    /**
                     * Encodes the specified GetLoggingConfigRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.GetLoggingConfigRequest.verify|verify} messages.
                     * @param message GetLoggingConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IGetLoggingConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetLoggingConfigRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.GetLoggingConfigRequest.verify|verify} messages.
                     * @param message GetLoggingConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IGetLoggingConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetLoggingConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetLoggingConfigRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.GetLoggingConfigRequest;

                    /**
                     * Decodes a GetLoggingConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetLoggingConfigRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.GetLoggingConfigRequest;

                    /**
                     * Verifies a GetLoggingConfigRequest message.
                     * @param message Plain 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 GetLoggingConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetLoggingConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.GetLoggingConfigRequest;

                    /**
                     * Creates a plain object from a GetLoggingConfigRequest message. Also converts values to other types if specified.
                     * @param message GetLoggingConfigRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.GetLoggingConfigRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetLoggingConfigRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetLoggingConfigRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateLoggingConfigRequest. */
                interface IUpdateLoggingConfigRequest {

                    /** UpdateLoggingConfigRequest loggingConfig */
                    loggingConfig?: (google.cloud.retail.v2alpha.ILoggingConfig|null);

                    /** UpdateLoggingConfigRequest updateMask */
                    updateMask?: (google.protobuf.IFieldMask|null);
                }

                /** Represents an UpdateLoggingConfigRequest. */
                class UpdateLoggingConfigRequest implements IUpdateLoggingConfigRequest {

                    /**
                     * Constructs a new UpdateLoggingConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IUpdateLoggingConfigRequest);

                    /** UpdateLoggingConfigRequest loggingConfig. */
                    public loggingConfig?: (google.cloud.retail.v2alpha.ILoggingConfig|null);

                    /** UpdateLoggingConfigRequest updateMask. */
                    public updateMask?: (google.protobuf.IFieldMask|null);

                    /**
                     * Creates a new UpdateLoggingConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateLoggingConfigRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IUpdateLoggingConfigRequest): google.cloud.retail.v2alpha.UpdateLoggingConfigRequest;

                    /**
                     * Encodes the specified UpdateLoggingConfigRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.UpdateLoggingConfigRequest.verify|verify} messages.
                     * @param message UpdateLoggingConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IUpdateLoggingConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateLoggingConfigRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.UpdateLoggingConfigRequest.verify|verify} messages.
                     * @param message UpdateLoggingConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IUpdateLoggingConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateLoggingConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateLoggingConfigRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.UpdateLoggingConfigRequest;

                    /**
                     * Decodes an UpdateLoggingConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateLoggingConfigRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.UpdateLoggingConfigRequest;

                    /**
                     * Verifies an UpdateLoggingConfigRequest message.
                     * @param message Plain 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 UpdateLoggingConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateLoggingConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.UpdateLoggingConfigRequest;

                    /**
                     * Creates a plain object from an UpdateLoggingConfigRequest message. Also converts values to other types if specified.
                     * @param message UpdateLoggingConfigRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.UpdateLoggingConfigRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateLoggingConfigRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateLoggingConfigRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetAlertConfigRequest. */
                interface IGetAlertConfigRequest {

                    /** GetAlertConfigRequest name */
                    name?: (string|null);
                }

                /** Represents a GetAlertConfigRequest. */
                class GetAlertConfigRequest implements IGetAlertConfigRequest {

                    /**
                     * Constructs a new GetAlertConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IGetAlertConfigRequest);

                    /** GetAlertConfigRequest name. */
                    public name: string;

                    /**
                     * Creates a new GetAlertConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetAlertConfigRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IGetAlertConfigRequest): google.cloud.retail.v2alpha.GetAlertConfigRequest;

                    /**
                     * Encodes the specified GetAlertConfigRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.GetAlertConfigRequest.verify|verify} messages.
                     * @param message GetAlertConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IGetAlertConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetAlertConfigRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.GetAlertConfigRequest.verify|verify} messages.
                     * @param message GetAlertConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IGetAlertConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetAlertConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetAlertConfigRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.GetAlertConfigRequest;

                    /**
                     * Decodes a GetAlertConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetAlertConfigRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.GetAlertConfigRequest;

                    /**
                     * Verifies a GetAlertConfigRequest message.
                     * @param message Plain 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 GetAlertConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetAlertConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.GetAlertConfigRequest;

                    /**
                     * Creates a plain object from a GetAlertConfigRequest message. Also converts values to other types if specified.
                     * @param message GetAlertConfigRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.GetAlertConfigRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetAlertConfigRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetAlertConfigRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateAlertConfigRequest. */
                interface IUpdateAlertConfigRequest {

                    /** UpdateAlertConfigRequest alertConfig */
                    alertConfig?: (google.cloud.retail.v2alpha.IAlertConfig|null);

                    /** UpdateAlertConfigRequest updateMask */
                    updateMask?: (google.protobuf.IFieldMask|null);
                }

                /** Represents an UpdateAlertConfigRequest. */
                class UpdateAlertConfigRequest implements IUpdateAlertConfigRequest {

                    /**
                     * Constructs a new UpdateAlertConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IUpdateAlertConfigRequest);

                    /** UpdateAlertConfigRequest alertConfig. */
                    public alertConfig?: (google.cloud.retail.v2alpha.IAlertConfig|null);

                    /** UpdateAlertConfigRequest updateMask. */
                    public updateMask?: (google.protobuf.IFieldMask|null);

                    /**
                     * Creates a new UpdateAlertConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateAlertConfigRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IUpdateAlertConfigRequest): google.cloud.retail.v2alpha.UpdateAlertConfigRequest;

                    /**
                     * Encodes the specified UpdateAlertConfigRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.UpdateAlertConfigRequest.verify|verify} messages.
                     * @param message UpdateAlertConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IUpdateAlertConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateAlertConfigRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.UpdateAlertConfigRequest.verify|verify} messages.
                     * @param message UpdateAlertConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IUpdateAlertConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateAlertConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateAlertConfigRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.UpdateAlertConfigRequest;

                    /**
                     * Decodes an UpdateAlertConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateAlertConfigRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.UpdateAlertConfigRequest;

                    /**
                     * Verifies an UpdateAlertConfigRequest message.
                     * @param message Plain 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 UpdateAlertConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateAlertConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.UpdateAlertConfigRequest;

                    /**
                     * Creates a plain object from an UpdateAlertConfigRequest message. Also converts values to other types if specified.
                     * @param message UpdateAlertConfigRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.UpdateAlertConfigRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateAlertConfigRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateAlertConfigRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ServingConfig. */
                interface IServingConfig {

                    /** ServingConfig name */
                    name?: (string|null);

                    /** ServingConfig displayName */
                    displayName?: (string|null);

                    /** ServingConfig modelId */
                    modelId?: (string|null);

                    /** ServingConfig priceRerankingLevel */
                    priceRerankingLevel?: (string|null);

                    /** ServingConfig facetControlIds */
                    facetControlIds?: (string[]|null);

                    /** ServingConfig dynamicFacetSpec */
                    dynamicFacetSpec?: (google.cloud.retail.v2alpha.SearchRequest.IDynamicFacetSpec|null);

                    /** ServingConfig boostControlIds */
                    boostControlIds?: (string[]|null);

                    /** ServingConfig filterControlIds */
                    filterControlIds?: (string[]|null);

                    /** ServingConfig redirectControlIds */
                    redirectControlIds?: (string[]|null);

                    /** ServingConfig twowaySynonymsControlIds */
                    twowaySynonymsControlIds?: (string[]|null);

                    /** ServingConfig onewaySynonymsControlIds */
                    onewaySynonymsControlIds?: (string[]|null);

                    /** ServingConfig doNotAssociateControlIds */
                    doNotAssociateControlIds?: (string[]|null);

                    /** ServingConfig replacementControlIds */
                    replacementControlIds?: (string[]|null);

                    /** ServingConfig ignoreControlIds */
                    ignoreControlIds?: (string[]|null);

                    /** ServingConfig diversityLevel */
                    diversityLevel?: (string|null);

                    /** ServingConfig diversityType */
                    diversityType?: (google.cloud.retail.v2alpha.ServingConfig.DiversityType|keyof typeof google.cloud.retail.v2alpha.ServingConfig.DiversityType|null);

                    /** ServingConfig enableCategoryFilterLevel */
                    enableCategoryFilterLevel?: (string|null);

                    /** ServingConfig ignoreRecsDenylist */
                    ignoreRecsDenylist?: (boolean|null);

                    /** ServingConfig personalizationSpec */
                    personalizationSpec?: (google.cloud.retail.v2alpha.SearchRequest.IPersonalizationSpec|null);

                    /** ServingConfig solutionTypes */
                    solutionTypes?: (google.cloud.retail.v2alpha.SolutionType[]|null);
                }

                /** Represents a ServingConfig. */
                class ServingConfig implements IServingConfig {

                    /**
                     * Constructs a new ServingConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IServingConfig);

                    /** ServingConfig name. */
                    public name: string;

                    /** ServingConfig displayName. */
                    public displayName: string;

                    /** ServingConfig modelId. */
                    public modelId: string;

                    /** ServingConfig priceRerankingLevel. */
                    public priceRerankingLevel: string;

                    /** ServingConfig facetControlIds. */
                    public facetControlIds: string[];

                    /** ServingConfig dynamicFacetSpec. */
                    public dynamicFacetSpec?: (google.cloud.retail.v2alpha.SearchRequest.IDynamicFacetSpec|null);

                    /** ServingConfig boostControlIds. */
                    public boostControlIds: string[];

                    /** ServingConfig filterControlIds. */
                    public filterControlIds: string[];

                    /** ServingConfig redirectControlIds. */
                    public redirectControlIds: string[];

                    /** ServingConfig twowaySynonymsControlIds. */
                    public twowaySynonymsControlIds: string[];

                    /** ServingConfig onewaySynonymsControlIds. */
                    public onewaySynonymsControlIds: string[];

                    /** ServingConfig doNotAssociateControlIds. */
                    public doNotAssociateControlIds: string[];

                    /** ServingConfig replacementControlIds. */
                    public replacementControlIds: string[];

                    /** ServingConfig ignoreControlIds. */
                    public ignoreControlIds: string[];

                    /** ServingConfig diversityLevel. */
                    public diversityLevel: string;

                    /** ServingConfig diversityType. */
                    public diversityType: (google.cloud.retail.v2alpha.ServingConfig.DiversityType|keyof typeof google.cloud.retail.v2alpha.ServingConfig.DiversityType);

                    /** ServingConfig enableCategoryFilterLevel. */
                    public enableCategoryFilterLevel: string;

                    /** ServingConfig ignoreRecsDenylist. */
                    public ignoreRecsDenylist: boolean;

                    /** ServingConfig personalizationSpec. */
                    public personalizationSpec?: (google.cloud.retail.v2alpha.SearchRequest.IPersonalizationSpec|null);

                    /** ServingConfig solutionTypes. */
                    public solutionTypes: google.cloud.retail.v2alpha.SolutionType[];

                    /**
                     * Creates a new ServingConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ServingConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IServingConfig): google.cloud.retail.v2alpha.ServingConfig;

                    /**
                     * Encodes the specified ServingConfig message. Does not implicitly {@link google.cloud.retail.v2alpha.ServingConfig.verify|verify} messages.
                     * @param message ServingConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IServingConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ServingConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ServingConfig.verify|verify} messages.
                     * @param message ServingConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IServingConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ServingConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ServingConfig
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ServingConfig;

                    /**
                     * Decodes a ServingConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ServingConfig
                     * @throws {Error} If the payload 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.retail.v2alpha.ServingConfig;

                    /**
                     * Verifies a ServingConfig message.
                     * @param message Plain 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 ServingConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ServingConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ServingConfig;

                    /**
                     * Creates a plain object from a ServingConfig message. Also converts values to other types if specified.
                     * @param message ServingConfig
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ServingConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ServingConfig to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ServingConfig
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace ServingConfig {

                    /** DiversityType enum. */
                    enum DiversityType {
                        DIVERSITY_TYPE_UNSPECIFIED = 0,
                        RULE_BASED_DIVERSITY = 2,
                        DATA_DRIVEN_DIVERSITY = 3
                    }
                }

                /** Represents a ServingConfigService */
                class ServingConfigService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new ServingConfigService 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 ServingConfigService 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): ServingConfigService;

                    /**
                     * Calls CreateServingConfig.
                     * @param request CreateServingConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ServingConfig
                     */
                    public createServingConfig(request: google.cloud.retail.v2alpha.ICreateServingConfigRequest, callback: google.cloud.retail.v2alpha.ServingConfigService.CreateServingConfigCallback): void;

                    /**
                     * Calls CreateServingConfig.
                     * @param request CreateServingConfigRequest message or plain object
                     * @returns Promise
                     */
                    public createServingConfig(request: google.cloud.retail.v2alpha.ICreateServingConfigRequest): Promise<google.cloud.retail.v2alpha.ServingConfig>;

                    /**
                     * Calls DeleteServingConfig.
                     * @param request DeleteServingConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Empty
                     */
                    public deleteServingConfig(request: google.cloud.retail.v2alpha.IDeleteServingConfigRequest, callback: google.cloud.retail.v2alpha.ServingConfigService.DeleteServingConfigCallback): void;

                    /**
                     * Calls DeleteServingConfig.
                     * @param request DeleteServingConfigRequest message or plain object
                     * @returns Promise
                     */
                    public deleteServingConfig(request: google.cloud.retail.v2alpha.IDeleteServingConfigRequest): Promise<google.protobuf.Empty>;

                    /**
                     * Calls UpdateServingConfig.
                     * @param request UpdateServingConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ServingConfig
                     */
                    public updateServingConfig(request: google.cloud.retail.v2alpha.IUpdateServingConfigRequest, callback: google.cloud.retail.v2alpha.ServingConfigService.UpdateServingConfigCallback): void;

                    /**
                     * Calls UpdateServingConfig.
                     * @param request UpdateServingConfigRequest message or plain object
                     * @returns Promise
                     */
                    public updateServingConfig(request: google.cloud.retail.v2alpha.IUpdateServingConfigRequest): Promise<google.cloud.retail.v2alpha.ServingConfig>;

                    /**
                     * Calls GetServingConfig.
                     * @param request GetServingConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ServingConfig
                     */
                    public getServingConfig(request: google.cloud.retail.v2alpha.IGetServingConfigRequest, callback: google.cloud.retail.v2alpha.ServingConfigService.GetServingConfigCallback): void;

                    /**
                     * Calls GetServingConfig.
                     * @param request GetServingConfigRequest message or plain object
                     * @returns Promise
                     */
                    public getServingConfig(request: google.cloud.retail.v2alpha.IGetServingConfigRequest): Promise<google.cloud.retail.v2alpha.ServingConfig>;

                    /**
                     * Calls ListServingConfigs.
                     * @param request ListServingConfigsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListServingConfigsResponse
                     */
                    public listServingConfigs(request: google.cloud.retail.v2alpha.IListServingConfigsRequest, callback: google.cloud.retail.v2alpha.ServingConfigService.ListServingConfigsCallback): void;

                    /**
                     * Calls ListServingConfigs.
                     * @param request ListServingConfigsRequest message or plain object
                     * @returns Promise
                     */
                    public listServingConfigs(request: google.cloud.retail.v2alpha.IListServingConfigsRequest): Promise<google.cloud.retail.v2alpha.ListServingConfigsResponse>;

                    /**
                     * Calls AddControl.
                     * @param request AddControlRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ServingConfig
                     */
                    public addControl(request: google.cloud.retail.v2alpha.IAddControlRequest, callback: google.cloud.retail.v2alpha.ServingConfigService.AddControlCallback): void;

                    /**
                     * Calls AddControl.
                     * @param request AddControlRequest message or plain object
                     * @returns Promise
                     */
                    public addControl(request: google.cloud.retail.v2alpha.IAddControlRequest): Promise<google.cloud.retail.v2alpha.ServingConfig>;

                    /**
                     * Calls RemoveControl.
                     * @param request RemoveControlRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ServingConfig
                     */
                    public removeControl(request: google.cloud.retail.v2alpha.IRemoveControlRequest, callback: google.cloud.retail.v2alpha.ServingConfigService.RemoveControlCallback): void;

                    /**
                     * Calls RemoveControl.
                     * @param request RemoveControlRequest message or plain object
                     * @returns Promise
                     */
                    public removeControl(request: google.cloud.retail.v2alpha.IRemoveControlRequest): Promise<google.cloud.retail.v2alpha.ServingConfig>;
                }

                namespace ServingConfigService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ServingConfigService|createServingConfig}.
                     * @param error Error, if any
                     * @param [response] ServingConfig
                     */
                    type CreateServingConfigCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.ServingConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ServingConfigService|deleteServingConfig}.
                     * @param error Error, if any
                     * @param [response] Empty
                     */
                    type DeleteServingConfigCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ServingConfigService|updateServingConfig}.
                     * @param error Error, if any
                     * @param [response] ServingConfig
                     */
                    type UpdateServingConfigCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.ServingConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ServingConfigService|getServingConfig}.
                     * @param error Error, if any
                     * @param [response] ServingConfig
                     */
                    type GetServingConfigCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.ServingConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ServingConfigService|listServingConfigs}.
                     * @param error Error, if any
                     * @param [response] ListServingConfigsResponse
                     */
                    type ListServingConfigsCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.ListServingConfigsResponse) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ServingConfigService|addControl}.
                     * @param error Error, if any
                     * @param [response] ServingConfig
                     */
                    type AddControlCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.ServingConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.ServingConfigService|removeControl}.
                     * @param error Error, if any
                     * @param [response] ServingConfig
                     */
                    type RemoveControlCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.ServingConfig) => void;
                }

                /** Properties of a CreateServingConfigRequest. */
                interface ICreateServingConfigRequest {

                    /** CreateServingConfigRequest parent */
                    parent?: (string|null);

                    /** CreateServingConfigRequest servingConfig */
                    servingConfig?: (google.cloud.retail.v2alpha.IServingConfig|null);

                    /** CreateServingConfigRequest servingConfigId */
                    servingConfigId?: (string|null);
                }

                /** Represents a CreateServingConfigRequest. */
                class CreateServingConfigRequest implements ICreateServingConfigRequest {

                    /**
                     * Constructs a new CreateServingConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.ICreateServingConfigRequest);

                    /** CreateServingConfigRequest parent. */
                    public parent: string;

                    /** CreateServingConfigRequest servingConfig. */
                    public servingConfig?: (google.cloud.retail.v2alpha.IServingConfig|null);

                    /** CreateServingConfigRequest servingConfigId. */
                    public servingConfigId: string;

                    /**
                     * Creates a new CreateServingConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CreateServingConfigRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.ICreateServingConfigRequest): google.cloud.retail.v2alpha.CreateServingConfigRequest;

                    /**
                     * Encodes the specified CreateServingConfigRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.CreateServingConfigRequest.verify|verify} messages.
                     * @param message CreateServingConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.ICreateServingConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CreateServingConfigRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.CreateServingConfigRequest.verify|verify} messages.
                     * @param message CreateServingConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.ICreateServingConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CreateServingConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CreateServingConfigRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.CreateServingConfigRequest;

                    /**
                     * Decodes a CreateServingConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CreateServingConfigRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.CreateServingConfigRequest;

                    /**
                     * Verifies a CreateServingConfigRequest message.
                     * @param message Plain 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 CreateServingConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CreateServingConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.CreateServingConfigRequest;

                    /**
                     * Creates a plain object from a CreateServingConfigRequest message. Also converts values to other types if specified.
                     * @param message CreateServingConfigRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.CreateServingConfigRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CreateServingConfigRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CreateServingConfigRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateServingConfigRequest. */
                interface IUpdateServingConfigRequest {

                    /** UpdateServingConfigRequest servingConfig */
                    servingConfig?: (google.cloud.retail.v2alpha.IServingConfig|null);

                    /** UpdateServingConfigRequest updateMask */
                    updateMask?: (google.protobuf.IFieldMask|null);
                }

                /** Represents an UpdateServingConfigRequest. */
                class UpdateServingConfigRequest implements IUpdateServingConfigRequest {

                    /**
                     * Constructs a new UpdateServingConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IUpdateServingConfigRequest);

                    /** UpdateServingConfigRequest servingConfig. */
                    public servingConfig?: (google.cloud.retail.v2alpha.IServingConfig|null);

                    /** UpdateServingConfigRequest updateMask. */
                    public updateMask?: (google.protobuf.IFieldMask|null);

                    /**
                     * Creates a new UpdateServingConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateServingConfigRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IUpdateServingConfigRequest): google.cloud.retail.v2alpha.UpdateServingConfigRequest;

                    /**
                     * Encodes the specified UpdateServingConfigRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.UpdateServingConfigRequest.verify|verify} messages.
                     * @param message UpdateServingConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IUpdateServingConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateServingConfigRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.UpdateServingConfigRequest.verify|verify} messages.
                     * @param message UpdateServingConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IUpdateServingConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateServingConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateServingConfigRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.UpdateServingConfigRequest;

                    /**
                     * Decodes an UpdateServingConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateServingConfigRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.UpdateServingConfigRequest;

                    /**
                     * Verifies an UpdateServingConfigRequest message.
                     * @param message Plain 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 UpdateServingConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateServingConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.UpdateServingConfigRequest;

                    /**
                     * Creates a plain object from an UpdateServingConfigRequest message. Also converts values to other types if specified.
                     * @param message UpdateServingConfigRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.UpdateServingConfigRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateServingConfigRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateServingConfigRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeleteServingConfigRequest. */
                interface IDeleteServingConfigRequest {

                    /** DeleteServingConfigRequest name */
                    name?: (string|null);
                }

                /** Represents a DeleteServingConfigRequest. */
                class DeleteServingConfigRequest implements IDeleteServingConfigRequest {

                    /**
                     * Constructs a new DeleteServingConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IDeleteServingConfigRequest);

                    /** DeleteServingConfigRequest name. */
                    public name: string;

                    /**
                     * Creates a new DeleteServingConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeleteServingConfigRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IDeleteServingConfigRequest): google.cloud.retail.v2alpha.DeleteServingConfigRequest;

                    /**
                     * Encodes the specified DeleteServingConfigRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.DeleteServingConfigRequest.verify|verify} messages.
                     * @param message DeleteServingConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IDeleteServingConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeleteServingConfigRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.DeleteServingConfigRequest.verify|verify} messages.
                     * @param message DeleteServingConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IDeleteServingConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeleteServingConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeleteServingConfigRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.DeleteServingConfigRequest;

                    /**
                     * Decodes a DeleteServingConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeleteServingConfigRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.DeleteServingConfigRequest;

                    /**
                     * Verifies a DeleteServingConfigRequest message.
                     * @param message Plain 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 DeleteServingConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeleteServingConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.DeleteServingConfigRequest;

                    /**
                     * Creates a plain object from a DeleteServingConfigRequest message. Also converts values to other types if specified.
                     * @param message DeleteServingConfigRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.DeleteServingConfigRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeleteServingConfigRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeleteServingConfigRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetServingConfigRequest. */
                interface IGetServingConfigRequest {

                    /** GetServingConfigRequest name */
                    name?: (string|null);
                }

                /** Represents a GetServingConfigRequest. */
                class GetServingConfigRequest implements IGetServingConfigRequest {

                    /**
                     * Constructs a new GetServingConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IGetServingConfigRequest);

                    /** GetServingConfigRequest name. */
                    public name: string;

                    /**
                     * Creates a new GetServingConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetServingConfigRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IGetServingConfigRequest): google.cloud.retail.v2alpha.GetServingConfigRequest;

                    /**
                     * Encodes the specified GetServingConfigRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.GetServingConfigRequest.verify|verify} messages.
                     * @param message GetServingConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IGetServingConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetServingConfigRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.GetServingConfigRequest.verify|verify} messages.
                     * @param message GetServingConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IGetServingConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetServingConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetServingConfigRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.GetServingConfigRequest;

                    /**
                     * Decodes a GetServingConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetServingConfigRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.GetServingConfigRequest;

                    /**
                     * Verifies a GetServingConfigRequest message.
                     * @param message Plain 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 GetServingConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetServingConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.GetServingConfigRequest;

                    /**
                     * Creates a plain object from a GetServingConfigRequest message. Also converts values to other types if specified.
                     * @param message GetServingConfigRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.GetServingConfigRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetServingConfigRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetServingConfigRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListServingConfigsRequest. */
                interface IListServingConfigsRequest {

                    /** ListServingConfigsRequest parent */
                    parent?: (string|null);

                    /** ListServingConfigsRequest pageSize */
                    pageSize?: (number|null);

                    /** ListServingConfigsRequest pageToken */
                    pageToken?: (string|null);
                }

                /** Represents a ListServingConfigsRequest. */
                class ListServingConfigsRequest implements IListServingConfigsRequest {

                    /**
                     * Constructs a new ListServingConfigsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IListServingConfigsRequest);

                    /** ListServingConfigsRequest parent. */
                    public parent: string;

                    /** ListServingConfigsRequest pageSize. */
                    public pageSize: number;

                    /** ListServingConfigsRequest pageToken. */
                    public pageToken: string;

                    /**
                     * Creates a new ListServingConfigsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListServingConfigsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IListServingConfigsRequest): google.cloud.retail.v2alpha.ListServingConfigsRequest;

                    /**
                     * Encodes the specified ListServingConfigsRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.ListServingConfigsRequest.verify|verify} messages.
                     * @param message ListServingConfigsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IListServingConfigsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListServingConfigsRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ListServingConfigsRequest.verify|verify} messages.
                     * @param message ListServingConfigsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IListServingConfigsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListServingConfigsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListServingConfigsRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ListServingConfigsRequest;

                    /**
                     * Decodes a ListServingConfigsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListServingConfigsRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.ListServingConfigsRequest;

                    /**
                     * Verifies a ListServingConfigsRequest message.
                     * @param message Plain 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 ListServingConfigsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListServingConfigsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ListServingConfigsRequest;

                    /**
                     * Creates a plain object from a ListServingConfigsRequest message. Also converts values to other types if specified.
                     * @param message ListServingConfigsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ListServingConfigsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListServingConfigsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListServingConfigsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListServingConfigsResponse. */
                interface IListServingConfigsResponse {

                    /** ListServingConfigsResponse servingConfigs */
                    servingConfigs?: (google.cloud.retail.v2alpha.IServingConfig[]|null);

                    /** ListServingConfigsResponse nextPageToken */
                    nextPageToken?: (string|null);
                }

                /** Represents a ListServingConfigsResponse. */
                class ListServingConfigsResponse implements IListServingConfigsResponse {

                    /**
                     * Constructs a new ListServingConfigsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IListServingConfigsResponse);

                    /** ListServingConfigsResponse servingConfigs. */
                    public servingConfigs: google.cloud.retail.v2alpha.IServingConfig[];

                    /** ListServingConfigsResponse nextPageToken. */
                    public nextPageToken: string;

                    /**
                     * Creates a new ListServingConfigsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListServingConfigsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IListServingConfigsResponse): google.cloud.retail.v2alpha.ListServingConfigsResponse;

                    /**
                     * Encodes the specified ListServingConfigsResponse message. Does not implicitly {@link google.cloud.retail.v2alpha.ListServingConfigsResponse.verify|verify} messages.
                     * @param message ListServingConfigsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IListServingConfigsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListServingConfigsResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.ListServingConfigsResponse.verify|verify} messages.
                     * @param message ListServingConfigsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IListServingConfigsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListServingConfigsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListServingConfigsResponse
                     * @throws {Error} If the payload is not 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.retail.v2alpha.ListServingConfigsResponse;

                    /**
                     * Decodes a ListServingConfigsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListServingConfigsResponse
                     * @throws {Error} If the payload 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.retail.v2alpha.ListServingConfigsResponse;

                    /**
                     * Verifies a ListServingConfigsResponse message.
                     * @param message Plain 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 ListServingConfigsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListServingConfigsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.ListServingConfigsResponse;

                    /**
                     * Creates a plain object from a ListServingConfigsResponse message. Also converts values to other types if specified.
                     * @param message ListServingConfigsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.ListServingConfigsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListServingConfigsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListServingConfigsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an AddControlRequest. */
                interface IAddControlRequest {

                    /** AddControlRequest servingConfig */
                    servingConfig?: (string|null);

                    /** AddControlRequest controlId */
                    controlId?: (string|null);
                }

                /** Represents an AddControlRequest. */
                class AddControlRequest implements IAddControlRequest {

                    /**
                     * Constructs a new AddControlRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IAddControlRequest);

                    /** AddControlRequest servingConfig. */
                    public servingConfig: string;

                    /** AddControlRequest controlId. */
                    public controlId: string;

                    /**
                     * Creates a new AddControlRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns AddControlRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IAddControlRequest): google.cloud.retail.v2alpha.AddControlRequest;

                    /**
                     * Encodes the specified AddControlRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.AddControlRequest.verify|verify} messages.
                     * @param message AddControlRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IAddControlRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified AddControlRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.AddControlRequest.verify|verify} messages.
                     * @param message AddControlRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IAddControlRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an AddControlRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns AddControlRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.AddControlRequest;

                    /**
                     * Decodes an AddControlRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns AddControlRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.AddControlRequest;

                    /**
                     * Verifies an AddControlRequest message.
                     * @param message Plain 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 AddControlRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns AddControlRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.AddControlRequest;

                    /**
                     * Creates a plain object from an AddControlRequest message. Also converts values to other types if specified.
                     * @param message AddControlRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.AddControlRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this AddControlRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for AddControlRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RemoveControlRequest. */
                interface IRemoveControlRequest {

                    /** RemoveControlRequest servingConfig */
                    servingConfig?: (string|null);

                    /** RemoveControlRequest controlId */
                    controlId?: (string|null);
                }

                /** Represents a RemoveControlRequest. */
                class RemoveControlRequest implements IRemoveControlRequest {

                    /**
                     * Constructs a new RemoveControlRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IRemoveControlRequest);

                    /** RemoveControlRequest servingConfig. */
                    public servingConfig: string;

                    /** RemoveControlRequest controlId. */
                    public controlId: string;

                    /**
                     * Creates a new RemoveControlRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RemoveControlRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IRemoveControlRequest): google.cloud.retail.v2alpha.RemoveControlRequest;

                    /**
                     * Encodes the specified RemoveControlRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.RemoveControlRequest.verify|verify} messages.
                     * @param message RemoveControlRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IRemoveControlRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RemoveControlRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.RemoveControlRequest.verify|verify} messages.
                     * @param message RemoveControlRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IRemoveControlRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RemoveControlRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RemoveControlRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.RemoveControlRequest;

                    /**
                     * Decodes a RemoveControlRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RemoveControlRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.RemoveControlRequest;

                    /**
                     * Verifies a RemoveControlRequest message.
                     * @param message Plain 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 RemoveControlRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RemoveControlRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.RemoveControlRequest;

                    /**
                     * Creates a plain object from a RemoveControlRequest message. Also converts values to other types if specified.
                     * @param message RemoveControlRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.RemoveControlRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RemoveControlRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RemoveControlRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Represents a UserEventService */
                class UserEventService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new UserEventService 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 UserEventService 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): UserEventService;

                    /**
                     * Calls WriteUserEvent.
                     * @param request WriteUserEventRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and UserEvent
                     */
                    public writeUserEvent(request: google.cloud.retail.v2alpha.IWriteUserEventRequest, callback: google.cloud.retail.v2alpha.UserEventService.WriteUserEventCallback): void;

                    /**
                     * Calls WriteUserEvent.
                     * @param request WriteUserEventRequest message or plain object
                     * @returns Promise
                     */
                    public writeUserEvent(request: google.cloud.retail.v2alpha.IWriteUserEventRequest): Promise<google.cloud.retail.v2alpha.UserEvent>;

                    /**
                     * Calls CollectUserEvent.
                     * @param request CollectUserEventRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and HttpBody
                     */
                    public collectUserEvent(request: google.cloud.retail.v2alpha.ICollectUserEventRequest, callback: google.cloud.retail.v2alpha.UserEventService.CollectUserEventCallback): void;

                    /**
                     * Calls CollectUserEvent.
                     * @param request CollectUserEventRequest message or plain object
                     * @returns Promise
                     */
                    public collectUserEvent(request: google.cloud.retail.v2alpha.ICollectUserEventRequest): Promise<google.api.HttpBody>;

                    /**
                     * Calls PurgeUserEvents.
                     * @param request PurgeUserEventsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public purgeUserEvents(request: google.cloud.retail.v2alpha.IPurgeUserEventsRequest, callback: google.cloud.retail.v2alpha.UserEventService.PurgeUserEventsCallback): void;

                    /**
                     * Calls PurgeUserEvents.
                     * @param request PurgeUserEventsRequest message or plain object
                     * @returns Promise
                     */
                    public purgeUserEvents(request: google.cloud.retail.v2alpha.IPurgeUserEventsRequest): Promise<google.longrunning.Operation>;

                    /**
                     * Calls ImportUserEvents.
                     * @param request ImportUserEventsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public importUserEvents(request: google.cloud.retail.v2alpha.IImportUserEventsRequest, callback: google.cloud.retail.v2alpha.UserEventService.ImportUserEventsCallback): void;

                    /**
                     * Calls ImportUserEvents.
                     * @param request ImportUserEventsRequest message or plain object
                     * @returns Promise
                     */
                    public importUserEvents(request: google.cloud.retail.v2alpha.IImportUserEventsRequest): Promise<google.longrunning.Operation>;

                    /**
                     * Calls ExportUserEvents.
                     * @param request ExportUserEventsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public exportUserEvents(request: google.cloud.retail.v2alpha.IExportUserEventsRequest, callback: google.cloud.retail.v2alpha.UserEventService.ExportUserEventsCallback): void;

                    /**
                     * Calls ExportUserEvents.
                     * @param request ExportUserEventsRequest message or plain object
                     * @returns Promise
                     */
                    public exportUserEvents(request: google.cloud.retail.v2alpha.IExportUserEventsRequest): Promise<google.longrunning.Operation>;

                    /**
                     * Calls RejoinUserEvents.
                     * @param request RejoinUserEventsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public rejoinUserEvents(request: google.cloud.retail.v2alpha.IRejoinUserEventsRequest, callback: google.cloud.retail.v2alpha.UserEventService.RejoinUserEventsCallback): void;

                    /**
                     * Calls RejoinUserEvents.
                     * @param request RejoinUserEventsRequest message or plain object
                     * @returns Promise
                     */
                    public rejoinUserEvents(request: google.cloud.retail.v2alpha.IRejoinUserEventsRequest): Promise<google.longrunning.Operation>;
                }

                namespace UserEventService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.UserEventService|writeUserEvent}.
                     * @param error Error, if any
                     * @param [response] UserEvent
                     */
                    type WriteUserEventCallback = (error: (Error|null), response?: google.cloud.retail.v2alpha.UserEvent) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.UserEventService|collectUserEvent}.
                     * @param error Error, if any
                     * @param [response] HttpBody
                     */
                    type CollectUserEventCallback = (error: (Error|null), response?: google.api.HttpBody) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.UserEventService|purgeUserEvents}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type PurgeUserEventsCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.UserEventService|importUserEvents}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type ImportUserEventsCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.UserEventService|exportUserEvents}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type ExportUserEventsCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2alpha.UserEventService|rejoinUserEvents}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type RejoinUserEventsCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;
                }

                /** Properties of a WriteUserEventRequest. */
                interface IWriteUserEventRequest {

                    /** WriteUserEventRequest parent */
                    parent?: (string|null);

                    /** WriteUserEventRequest userEvent */
                    userEvent?: (google.cloud.retail.v2alpha.IUserEvent|null);

                    /** WriteUserEventRequest writeAsync */
                    writeAsync?: (boolean|null);
                }

                /** Represents a WriteUserEventRequest. */
                class WriteUserEventRequest implements IWriteUserEventRequest {

                    /**
                     * Constructs a new WriteUserEventRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IWriteUserEventRequest);

                    /** WriteUserEventRequest parent. */
                    public parent: string;

                    /** WriteUserEventRequest userEvent. */
                    public userEvent?: (google.cloud.retail.v2alpha.IUserEvent|null);

                    /** WriteUserEventRequest writeAsync. */
                    public writeAsync: boolean;

                    /**
                     * Creates a new WriteUserEventRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WriteUserEventRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IWriteUserEventRequest): google.cloud.retail.v2alpha.WriteUserEventRequest;

                    /**
                     * Encodes the specified WriteUserEventRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.WriteUserEventRequest.verify|verify} messages.
                     * @param message WriteUserEventRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IWriteUserEventRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WriteUserEventRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.WriteUserEventRequest.verify|verify} messages.
                     * @param message WriteUserEventRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IWriteUserEventRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WriteUserEventRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WriteUserEventRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.WriteUserEventRequest;

                    /**
                     * Decodes a WriteUserEventRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WriteUserEventRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.WriteUserEventRequest;

                    /**
                     * Verifies a WriteUserEventRequest message.
                     * @param message Plain 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 WriteUserEventRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WriteUserEventRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.WriteUserEventRequest;

                    /**
                     * Creates a plain object from a WriteUserEventRequest message. Also converts values to other types if specified.
                     * @param message WriteUserEventRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.WriteUserEventRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WriteUserEventRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WriteUserEventRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CollectUserEventRequest. */
                interface ICollectUserEventRequest {

                    /** CollectUserEventRequest prebuiltRule */
                    prebuiltRule?: (string|null);

                    /** CollectUserEventRequest parent */
                    parent?: (string|null);

                    /** CollectUserEventRequest userEvent */
                    userEvent?: (string|null);

                    /** CollectUserEventRequest uri */
                    uri?: (string|null);

                    /** CollectUserEventRequest ets */
                    ets?: (number|Long|string|null);

                    /** CollectUserEventRequest rawJson */
                    rawJson?: (string|null);
                }

                /** Represents a CollectUserEventRequest. */
                class CollectUserEventRequest implements ICollectUserEventRequest {

                    /**
                     * Constructs a new CollectUserEventRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.ICollectUserEventRequest);

                    /** CollectUserEventRequest prebuiltRule. */
                    public prebuiltRule?: (string|null);

                    /** CollectUserEventRequest parent. */
                    public parent: string;

                    /** CollectUserEventRequest userEvent. */
                    public userEvent: string;

                    /** CollectUserEventRequest uri. */
                    public uri: string;

                    /** CollectUserEventRequest ets. */
                    public ets: (number|Long|string);

                    /** CollectUserEventRequest rawJson. */
                    public rawJson: string;

                    /** CollectUserEventRequest conversionRule. */
                    public conversionRule?: "prebuiltRule";

                    /**
                     * Creates a new CollectUserEventRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CollectUserEventRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.ICollectUserEventRequest): google.cloud.retail.v2alpha.CollectUserEventRequest;

                    /**
                     * Encodes the specified CollectUserEventRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.CollectUserEventRequest.verify|verify} messages.
                     * @param message CollectUserEventRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.ICollectUserEventRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CollectUserEventRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.CollectUserEventRequest.verify|verify} messages.
                     * @param message CollectUserEventRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.ICollectUserEventRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CollectUserEventRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CollectUserEventRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.CollectUserEventRequest;

                    /**
                     * Decodes a CollectUserEventRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CollectUserEventRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.CollectUserEventRequest;

                    /**
                     * Verifies a CollectUserEventRequest message.
                     * @param message Plain 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 CollectUserEventRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CollectUserEventRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.CollectUserEventRequest;

                    /**
                     * Creates a plain object from a CollectUserEventRequest message. Also converts values to other types if specified.
                     * @param message CollectUserEventRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.CollectUserEventRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CollectUserEventRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CollectUserEventRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RejoinUserEventsRequest. */
                interface IRejoinUserEventsRequest {

                    /** RejoinUserEventsRequest parent */
                    parent?: (string|null);

                    /** RejoinUserEventsRequest userEventRejoinScope */
                    userEventRejoinScope?: (google.cloud.retail.v2alpha.RejoinUserEventsRequest.UserEventRejoinScope|keyof typeof google.cloud.retail.v2alpha.RejoinUserEventsRequest.UserEventRejoinScope|null);
                }

                /** Represents a RejoinUserEventsRequest. */
                class RejoinUserEventsRequest implements IRejoinUserEventsRequest {

                    /**
                     * Constructs a new RejoinUserEventsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IRejoinUserEventsRequest);

                    /** RejoinUserEventsRequest parent. */
                    public parent: string;

                    /** RejoinUserEventsRequest userEventRejoinScope. */
                    public userEventRejoinScope: (google.cloud.retail.v2alpha.RejoinUserEventsRequest.UserEventRejoinScope|keyof typeof google.cloud.retail.v2alpha.RejoinUserEventsRequest.UserEventRejoinScope);

                    /**
                     * Creates a new RejoinUserEventsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RejoinUserEventsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IRejoinUserEventsRequest): google.cloud.retail.v2alpha.RejoinUserEventsRequest;

                    /**
                     * Encodes the specified RejoinUserEventsRequest message. Does not implicitly {@link google.cloud.retail.v2alpha.RejoinUserEventsRequest.verify|verify} messages.
                     * @param message RejoinUserEventsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IRejoinUserEventsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RejoinUserEventsRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.RejoinUserEventsRequest.verify|verify} messages.
                     * @param message RejoinUserEventsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IRejoinUserEventsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RejoinUserEventsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RejoinUserEventsRequest
                     * @throws {Error} If the payload is not 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.retail.v2alpha.RejoinUserEventsRequest;

                    /**
                     * Decodes a RejoinUserEventsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RejoinUserEventsRequest
                     * @throws {Error} If the payload 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.retail.v2alpha.RejoinUserEventsRequest;

                    /**
                     * Verifies a RejoinUserEventsRequest message.
                     * @param message Plain 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 RejoinUserEventsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RejoinUserEventsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.RejoinUserEventsRequest;

                    /**
                     * Creates a plain object from a RejoinUserEventsRequest message. Also converts values to other types if specified.
                     * @param message RejoinUserEventsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.RejoinUserEventsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RejoinUserEventsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RejoinUserEventsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace RejoinUserEventsRequest {

                    /** UserEventRejoinScope enum. */
                    enum UserEventRejoinScope {
                        USER_EVENT_REJOIN_SCOPE_UNSPECIFIED = 0,
                        JOINED_EVENTS = 1,
                        UNJOINED_EVENTS = 2
                    }
                }

                /** Properties of a RejoinUserEventsResponse. */
                interface IRejoinUserEventsResponse {

                    /** RejoinUserEventsResponse rejoinedUserEventsCount */
                    rejoinedUserEventsCount?: (number|Long|string|null);
                }

                /** Represents a RejoinUserEventsResponse. */
                class RejoinUserEventsResponse implements IRejoinUserEventsResponse {

                    /**
                     * Constructs a new RejoinUserEventsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IRejoinUserEventsResponse);

                    /** RejoinUserEventsResponse rejoinedUserEventsCount. */
                    public rejoinedUserEventsCount: (number|Long|string);

                    /**
                     * Creates a new RejoinUserEventsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RejoinUserEventsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IRejoinUserEventsResponse): google.cloud.retail.v2alpha.RejoinUserEventsResponse;

                    /**
                     * Encodes the specified RejoinUserEventsResponse message. Does not implicitly {@link google.cloud.retail.v2alpha.RejoinUserEventsResponse.verify|verify} messages.
                     * @param message RejoinUserEventsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IRejoinUserEventsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RejoinUserEventsResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.RejoinUserEventsResponse.verify|verify} messages.
                     * @param message RejoinUserEventsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IRejoinUserEventsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RejoinUserEventsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RejoinUserEventsResponse
                     * @throws {Error} If the payload is not 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.retail.v2alpha.RejoinUserEventsResponse;

                    /**
                     * Decodes a RejoinUserEventsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RejoinUserEventsResponse
                     * @throws {Error} If the payload 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.retail.v2alpha.RejoinUserEventsResponse;

                    /**
                     * Verifies a RejoinUserEventsResponse message.
                     * @param message Plain 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 RejoinUserEventsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RejoinUserEventsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.RejoinUserEventsResponse;

                    /**
                     * Creates a plain object from a RejoinUserEventsResponse message. Also converts values to other types if specified.
                     * @param message RejoinUserEventsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.RejoinUserEventsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RejoinUserEventsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RejoinUserEventsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RejoinUserEventsMetadata. */
                interface IRejoinUserEventsMetadata {
                }

                /** Represents a RejoinUserEventsMetadata. */
                class RejoinUserEventsMetadata implements IRejoinUserEventsMetadata {

                    /**
                     * Constructs a new RejoinUserEventsMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2alpha.IRejoinUserEventsMetadata);

                    /**
                     * Creates a new RejoinUserEventsMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RejoinUserEventsMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2alpha.IRejoinUserEventsMetadata): google.cloud.retail.v2alpha.RejoinUserEventsMetadata;

                    /**
                     * Encodes the specified RejoinUserEventsMetadata message. Does not implicitly {@link google.cloud.retail.v2alpha.RejoinUserEventsMetadata.verify|verify} messages.
                     * @param message RejoinUserEventsMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2alpha.IRejoinUserEventsMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RejoinUserEventsMetadata message, length delimited. Does not implicitly {@link google.cloud.retail.v2alpha.RejoinUserEventsMetadata.verify|verify} messages.
                     * @param message RejoinUserEventsMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2alpha.IRejoinUserEventsMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RejoinUserEventsMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RejoinUserEventsMetadata
                     * @throws {Error} If the payload is not 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.retail.v2alpha.RejoinUserEventsMetadata;

                    /**
                     * Decodes a RejoinUserEventsMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RejoinUserEventsMetadata
                     * @throws {Error} If the payload 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.retail.v2alpha.RejoinUserEventsMetadata;

                    /**
                     * Verifies a RejoinUserEventsMetadata message.
                     * @param message Plain 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 RejoinUserEventsMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RejoinUserEventsMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2alpha.RejoinUserEventsMetadata;

                    /**
                     * Creates a plain object from a RejoinUserEventsMetadata message. Also converts values to other types if specified.
                     * @param message RejoinUserEventsMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2alpha.RejoinUserEventsMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RejoinUserEventsMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RejoinUserEventsMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }

            /** Namespace v2beta. */
            namespace v2beta {

                /** Represents an AnalyticsService */
                class AnalyticsService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new AnalyticsService 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 AnalyticsService 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): AnalyticsService;

                    /**
                     * Calls ExportAnalyticsMetrics.
                     * @param request ExportAnalyticsMetricsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public exportAnalyticsMetrics(request: google.cloud.retail.v2beta.IExportAnalyticsMetricsRequest, callback: google.cloud.retail.v2beta.AnalyticsService.ExportAnalyticsMetricsCallback): void;

                    /**
                     * Calls ExportAnalyticsMetrics.
                     * @param request ExportAnalyticsMetricsRequest message or plain object
                     * @returns Promise
                     */
                    public exportAnalyticsMetrics(request: google.cloud.retail.v2beta.IExportAnalyticsMetricsRequest): Promise<google.longrunning.Operation>;
                }

                namespace AnalyticsService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.AnalyticsService|exportAnalyticsMetrics}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type ExportAnalyticsMetricsCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;
                }

                /** Properties of an OutputConfig. */
                interface IOutputConfig {

                    /** OutputConfig gcsDestination */
                    gcsDestination?: (google.cloud.retail.v2beta.OutputConfig.IGcsDestination|null);

                    /** OutputConfig bigqueryDestination */
                    bigqueryDestination?: (google.cloud.retail.v2beta.OutputConfig.IBigQueryDestination|null);
                }

                /** Represents an OutputConfig. */
                class OutputConfig implements IOutputConfig {

                    /**
                     * Constructs a new OutputConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IOutputConfig);

                    /** OutputConfig gcsDestination. */
                    public gcsDestination?: (google.cloud.retail.v2beta.OutputConfig.IGcsDestination|null);

                    /** OutputConfig bigqueryDestination. */
                    public bigqueryDestination?: (google.cloud.retail.v2beta.OutputConfig.IBigQueryDestination|null);

                    /** OutputConfig destination. */
                    public destination?: ("gcsDestination"|"bigqueryDestination");

                    /**
                     * Creates a new OutputConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns OutputConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IOutputConfig): google.cloud.retail.v2beta.OutputConfig;

                    /**
                     * Encodes the specified OutputConfig message. Does not implicitly {@link google.cloud.retail.v2beta.OutputConfig.verify|verify} messages.
                     * @param message OutputConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IOutputConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified OutputConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.OutputConfig.verify|verify} messages.
                     * @param message OutputConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IOutputConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an OutputConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns OutputConfig
                     * @throws {Error} If the payload is not 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.retail.v2beta.OutputConfig;

                    /**
                     * Decodes an OutputConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns OutputConfig
                     * @throws {Error} If the payload 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.retail.v2beta.OutputConfig;

                    /**
                     * Verifies an OutputConfig message.
                     * @param message Plain 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 OutputConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns OutputConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.OutputConfig;

                    /**
                     * Creates a plain object from an OutputConfig message. Also converts values to other types if specified.
                     * @param message OutputConfig
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.OutputConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this OutputConfig to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for OutputConfig
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace OutputConfig {

                    /** Properties of a GcsDestination. */
                    interface IGcsDestination {

                        /** GcsDestination outputUriPrefix */
                        outputUriPrefix?: (string|null);
                    }

                    /** Represents a GcsDestination. */
                    class GcsDestination implements IGcsDestination {

                        /**
                         * Constructs a new GcsDestination.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.OutputConfig.IGcsDestination);

                        /** GcsDestination outputUriPrefix. */
                        public outputUriPrefix: string;

                        /**
                         * Creates a new GcsDestination instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns GcsDestination instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.OutputConfig.IGcsDestination): google.cloud.retail.v2beta.OutputConfig.GcsDestination;

                        /**
                         * Encodes the specified GcsDestination message. Does not implicitly {@link google.cloud.retail.v2beta.OutputConfig.GcsDestination.verify|verify} messages.
                         * @param message GcsDestination message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.OutputConfig.IGcsDestination, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified GcsDestination message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.OutputConfig.GcsDestination.verify|verify} messages.
                         * @param message GcsDestination message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.OutputConfig.IGcsDestination, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a GcsDestination message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns GcsDestination
                         * @throws {Error} If the payload is not 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.retail.v2beta.OutputConfig.GcsDestination;

                        /**
                         * Decodes a GcsDestination message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns GcsDestination
                         * @throws {Error} If the payload 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.retail.v2beta.OutputConfig.GcsDestination;

                        /**
                         * Verifies a GcsDestination message.
                         * @param message Plain 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 GcsDestination message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns GcsDestination
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.OutputConfig.GcsDestination;

                        /**
                         * Creates a plain object from a GcsDestination message. Also converts values to other types if specified.
                         * @param message GcsDestination
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.OutputConfig.GcsDestination, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this GcsDestination to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for GcsDestination
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a BigQueryDestination. */
                    interface IBigQueryDestination {

                        /** BigQueryDestination datasetId */
                        datasetId?: (string|null);

                        /** BigQueryDestination tableIdPrefix */
                        tableIdPrefix?: (string|null);

                        /** BigQueryDestination tableType */
                        tableType?: (string|null);
                    }

                    /** Represents a BigQueryDestination. */
                    class BigQueryDestination implements IBigQueryDestination {

                        /**
                         * Constructs a new BigQueryDestination.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.OutputConfig.IBigQueryDestination);

                        /** BigQueryDestination datasetId. */
                        public datasetId: string;

                        /** BigQueryDestination tableIdPrefix. */
                        public tableIdPrefix: string;

                        /** BigQueryDestination tableType. */
                        public tableType: string;

                        /**
                         * Creates a new BigQueryDestination instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BigQueryDestination instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.OutputConfig.IBigQueryDestination): google.cloud.retail.v2beta.OutputConfig.BigQueryDestination;

                        /**
                         * Encodes the specified BigQueryDestination message. Does not implicitly {@link google.cloud.retail.v2beta.OutputConfig.BigQueryDestination.verify|verify} messages.
                         * @param message BigQueryDestination message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.OutputConfig.IBigQueryDestination, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BigQueryDestination message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.OutputConfig.BigQueryDestination.verify|verify} messages.
                         * @param message BigQueryDestination message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.OutputConfig.IBigQueryDestination, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BigQueryDestination message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BigQueryDestination
                         * @throws {Error} If the payload is not 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.retail.v2beta.OutputConfig.BigQueryDestination;

                        /**
                         * Decodes a BigQueryDestination message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BigQueryDestination
                         * @throws {Error} If the payload 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.retail.v2beta.OutputConfig.BigQueryDestination;

                        /**
                         * Verifies a BigQueryDestination message.
                         * @param message Plain 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 BigQueryDestination message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BigQueryDestination
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.OutputConfig.BigQueryDestination;

                        /**
                         * Creates a plain object from a BigQueryDestination message. Also converts values to other types if specified.
                         * @param message BigQueryDestination
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.OutputConfig.BigQueryDestination, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BigQueryDestination to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BigQueryDestination
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of an ExportErrorsConfig. */
                interface IExportErrorsConfig {

                    /** ExportErrorsConfig gcsPrefix */
                    gcsPrefix?: (string|null);
                }

                /** Represents an ExportErrorsConfig. */
                class ExportErrorsConfig implements IExportErrorsConfig {

                    /**
                     * Constructs a new ExportErrorsConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IExportErrorsConfig);

                    /** ExportErrorsConfig gcsPrefix. */
                    public gcsPrefix?: (string|null);

                    /** ExportErrorsConfig destination. */
                    public destination?: "gcsPrefix";

                    /**
                     * Creates a new ExportErrorsConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ExportErrorsConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IExportErrorsConfig): google.cloud.retail.v2beta.ExportErrorsConfig;

                    /**
                     * Encodes the specified ExportErrorsConfig message. Does not implicitly {@link google.cloud.retail.v2beta.ExportErrorsConfig.verify|verify} messages.
                     * @param message ExportErrorsConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IExportErrorsConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ExportErrorsConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ExportErrorsConfig.verify|verify} messages.
                     * @param message ExportErrorsConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IExportErrorsConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ExportErrorsConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ExportErrorsConfig
                     * @throws {Error} If the payload is not 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.retail.v2beta.ExportErrorsConfig;

                    /**
                     * Decodes an ExportErrorsConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ExportErrorsConfig
                     * @throws {Error} If the payload 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.retail.v2beta.ExportErrorsConfig;

                    /**
                     * Verifies an ExportErrorsConfig message.
                     * @param message Plain 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 ExportErrorsConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ExportErrorsConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ExportErrorsConfig;

                    /**
                     * Creates a plain object from an ExportErrorsConfig message. Also converts values to other types if specified.
                     * @param message ExportErrorsConfig
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ExportErrorsConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ExportErrorsConfig to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ExportErrorsConfig
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ExportProductsRequest. */
                interface IExportProductsRequest {

                    /** ExportProductsRequest parent */
                    parent?: (string|null);

                    /** ExportProductsRequest outputConfig */
                    outputConfig?: (google.cloud.retail.v2beta.IOutputConfig|null);

                    /** ExportProductsRequest filter */
                    filter?: (string|null);
                }

                /** Represents an ExportProductsRequest. */
                class ExportProductsRequest implements IExportProductsRequest {

                    /**
                     * Constructs a new ExportProductsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IExportProductsRequest);

                    /** ExportProductsRequest parent. */
                    public parent: string;

                    /** ExportProductsRequest outputConfig. */
                    public outputConfig?: (google.cloud.retail.v2beta.IOutputConfig|null);

                    /** ExportProductsRequest filter. */
                    public filter: string;

                    /**
                     * Creates a new ExportProductsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ExportProductsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IExportProductsRequest): google.cloud.retail.v2beta.ExportProductsRequest;

                    /**
                     * Encodes the specified ExportProductsRequest message. Does not implicitly {@link google.cloud.retail.v2beta.ExportProductsRequest.verify|verify} messages.
                     * @param message ExportProductsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IExportProductsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ExportProductsRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ExportProductsRequest.verify|verify} messages.
                     * @param message ExportProductsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IExportProductsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ExportProductsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ExportProductsRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.ExportProductsRequest;

                    /**
                     * Decodes an ExportProductsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ExportProductsRequest
                     * @throws {Error} If the payload 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.retail.v2beta.ExportProductsRequest;

                    /**
                     * Verifies an ExportProductsRequest message.
                     * @param message Plain 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 ExportProductsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ExportProductsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ExportProductsRequest;

                    /**
                     * Creates a plain object from an ExportProductsRequest message. Also converts values to other types if specified.
                     * @param message ExportProductsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ExportProductsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ExportProductsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ExportProductsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ExportUserEventsRequest. */
                interface IExportUserEventsRequest {

                    /** ExportUserEventsRequest parent */
                    parent?: (string|null);

                    /** ExportUserEventsRequest outputConfig */
                    outputConfig?: (google.cloud.retail.v2beta.IOutputConfig|null);

                    /** ExportUserEventsRequest filter */
                    filter?: (string|null);
                }

                /** Represents an ExportUserEventsRequest. */
                class ExportUserEventsRequest implements IExportUserEventsRequest {

                    /**
                     * Constructs a new ExportUserEventsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IExportUserEventsRequest);

                    /** ExportUserEventsRequest parent. */
                    public parent: string;

                    /** ExportUserEventsRequest outputConfig. */
                    public outputConfig?: (google.cloud.retail.v2beta.IOutputConfig|null);

                    /** ExportUserEventsRequest filter. */
                    public filter: string;

                    /**
                     * Creates a new ExportUserEventsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ExportUserEventsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IExportUserEventsRequest): google.cloud.retail.v2beta.ExportUserEventsRequest;

                    /**
                     * Encodes the specified ExportUserEventsRequest message. Does not implicitly {@link google.cloud.retail.v2beta.ExportUserEventsRequest.verify|verify} messages.
                     * @param message ExportUserEventsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IExportUserEventsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ExportUserEventsRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ExportUserEventsRequest.verify|verify} messages.
                     * @param message ExportUserEventsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IExportUserEventsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ExportUserEventsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ExportUserEventsRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.ExportUserEventsRequest;

                    /**
                     * Decodes an ExportUserEventsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ExportUserEventsRequest
                     * @throws {Error} If the payload 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.retail.v2beta.ExportUserEventsRequest;

                    /**
                     * Verifies an ExportUserEventsRequest message.
                     * @param message Plain 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 ExportUserEventsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ExportUserEventsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ExportUserEventsRequest;

                    /**
                     * Creates a plain object from an ExportUserEventsRequest message. Also converts values to other types if specified.
                     * @param message ExportUserEventsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ExportUserEventsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ExportUserEventsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ExportUserEventsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ExportAnalyticsMetricsRequest. */
                interface IExportAnalyticsMetricsRequest {

                    /** ExportAnalyticsMetricsRequest catalog */
                    catalog?: (string|null);

                    /** ExportAnalyticsMetricsRequest outputConfig */
                    outputConfig?: (google.cloud.retail.v2beta.IOutputConfig|null);

                    /** ExportAnalyticsMetricsRequest filter */
                    filter?: (string|null);
                }

                /** Represents an ExportAnalyticsMetricsRequest. */
                class ExportAnalyticsMetricsRequest implements IExportAnalyticsMetricsRequest {

                    /**
                     * Constructs a new ExportAnalyticsMetricsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IExportAnalyticsMetricsRequest);

                    /** ExportAnalyticsMetricsRequest catalog. */
                    public catalog: string;

                    /** ExportAnalyticsMetricsRequest outputConfig. */
                    public outputConfig?: (google.cloud.retail.v2beta.IOutputConfig|null);

                    /** ExportAnalyticsMetricsRequest filter. */
                    public filter: string;

                    /**
                     * Creates a new ExportAnalyticsMetricsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ExportAnalyticsMetricsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IExportAnalyticsMetricsRequest): google.cloud.retail.v2beta.ExportAnalyticsMetricsRequest;

                    /**
                     * Encodes the specified ExportAnalyticsMetricsRequest message. Does not implicitly {@link google.cloud.retail.v2beta.ExportAnalyticsMetricsRequest.verify|verify} messages.
                     * @param message ExportAnalyticsMetricsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IExportAnalyticsMetricsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ExportAnalyticsMetricsRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ExportAnalyticsMetricsRequest.verify|verify} messages.
                     * @param message ExportAnalyticsMetricsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IExportAnalyticsMetricsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ExportAnalyticsMetricsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ExportAnalyticsMetricsRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.ExportAnalyticsMetricsRequest;

                    /**
                     * Decodes an ExportAnalyticsMetricsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ExportAnalyticsMetricsRequest
                     * @throws {Error} If the payload 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.retail.v2beta.ExportAnalyticsMetricsRequest;

                    /**
                     * Verifies an ExportAnalyticsMetricsRequest message.
                     * @param message Plain 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 ExportAnalyticsMetricsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ExportAnalyticsMetricsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ExportAnalyticsMetricsRequest;

                    /**
                     * Creates a plain object from an ExportAnalyticsMetricsRequest message. Also converts values to other types if specified.
                     * @param message ExportAnalyticsMetricsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ExportAnalyticsMetricsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ExportAnalyticsMetricsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ExportAnalyticsMetricsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ExportMetadata. */
                interface IExportMetadata {

                    /** ExportMetadata createTime */
                    createTime?: (google.protobuf.ITimestamp|null);

                    /** ExportMetadata updateTime */
                    updateTime?: (google.protobuf.ITimestamp|null);
                }

                /** Represents an ExportMetadata. */
                class ExportMetadata implements IExportMetadata {

                    /**
                     * Constructs a new ExportMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IExportMetadata);

                    /** ExportMetadata createTime. */
                    public createTime?: (google.protobuf.ITimestamp|null);

                    /** ExportMetadata updateTime. */
                    public updateTime?: (google.protobuf.ITimestamp|null);

                    /**
                     * Creates a new ExportMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ExportMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IExportMetadata): google.cloud.retail.v2beta.ExportMetadata;

                    /**
                     * Encodes the specified ExportMetadata message. Does not implicitly {@link google.cloud.retail.v2beta.ExportMetadata.verify|verify} messages.
                     * @param message ExportMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IExportMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ExportMetadata message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ExportMetadata.verify|verify} messages.
                     * @param message ExportMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IExportMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ExportMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ExportMetadata
                     * @throws {Error} If the payload is not 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.retail.v2beta.ExportMetadata;

                    /**
                     * Decodes an ExportMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ExportMetadata
                     * @throws {Error} If the payload 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.retail.v2beta.ExportMetadata;

                    /**
                     * Verifies an ExportMetadata message.
                     * @param message Plain 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 ExportMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ExportMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ExportMetadata;

                    /**
                     * Creates a plain object from an ExportMetadata message. Also converts values to other types if specified.
                     * @param message ExportMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ExportMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ExportMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ExportMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ExportProductsResponse. */
                interface IExportProductsResponse {

                    /** ExportProductsResponse errorSamples */
                    errorSamples?: (google.rpc.IStatus[]|null);

                    /** ExportProductsResponse errorsConfig */
                    errorsConfig?: (google.cloud.retail.v2beta.IExportErrorsConfig|null);

                    /** ExportProductsResponse outputResult */
                    outputResult?: (google.cloud.retail.v2beta.IOutputResult|null);
                }

                /** Represents an ExportProductsResponse. */
                class ExportProductsResponse implements IExportProductsResponse {

                    /**
                     * Constructs a new ExportProductsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IExportProductsResponse);

                    /** ExportProductsResponse errorSamples. */
                    public errorSamples: google.rpc.IStatus[];

                    /** ExportProductsResponse errorsConfig. */
                    public errorsConfig?: (google.cloud.retail.v2beta.IExportErrorsConfig|null);

                    /** ExportProductsResponse outputResult. */
                    public outputResult?: (google.cloud.retail.v2beta.IOutputResult|null);

                    /**
                     * Creates a new ExportProductsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ExportProductsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IExportProductsResponse): google.cloud.retail.v2beta.ExportProductsResponse;

                    /**
                     * Encodes the specified ExportProductsResponse message. Does not implicitly {@link google.cloud.retail.v2beta.ExportProductsResponse.verify|verify} messages.
                     * @param message ExportProductsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IExportProductsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ExportProductsResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ExportProductsResponse.verify|verify} messages.
                     * @param message ExportProductsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IExportProductsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ExportProductsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ExportProductsResponse
                     * @throws {Error} If the payload is not 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.retail.v2beta.ExportProductsResponse;

                    /**
                     * Decodes an ExportProductsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ExportProductsResponse
                     * @throws {Error} If the payload 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.retail.v2beta.ExportProductsResponse;

                    /**
                     * Verifies an ExportProductsResponse message.
                     * @param message Plain 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 ExportProductsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ExportProductsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ExportProductsResponse;

                    /**
                     * Creates a plain object from an ExportProductsResponse message. Also converts values to other types if specified.
                     * @param message ExportProductsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ExportProductsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ExportProductsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ExportProductsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ExportUserEventsResponse. */
                interface IExportUserEventsResponse {

                    /** ExportUserEventsResponse errorSamples */
                    errorSamples?: (google.rpc.IStatus[]|null);

                    /** ExportUserEventsResponse errorsConfig */
                    errorsConfig?: (google.cloud.retail.v2beta.IExportErrorsConfig|null);

                    /** ExportUserEventsResponse outputResult */
                    outputResult?: (google.cloud.retail.v2beta.IOutputResult|null);
                }

                /** Represents an ExportUserEventsResponse. */
                class ExportUserEventsResponse implements IExportUserEventsResponse {

                    /**
                     * Constructs a new ExportUserEventsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IExportUserEventsResponse);

                    /** ExportUserEventsResponse errorSamples. */
                    public errorSamples: google.rpc.IStatus[];

                    /** ExportUserEventsResponse errorsConfig. */
                    public errorsConfig?: (google.cloud.retail.v2beta.IExportErrorsConfig|null);

                    /** ExportUserEventsResponse outputResult. */
                    public outputResult?: (google.cloud.retail.v2beta.IOutputResult|null);

                    /**
                     * Creates a new ExportUserEventsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ExportUserEventsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IExportUserEventsResponse): google.cloud.retail.v2beta.ExportUserEventsResponse;

                    /**
                     * Encodes the specified ExportUserEventsResponse message. Does not implicitly {@link google.cloud.retail.v2beta.ExportUserEventsResponse.verify|verify} messages.
                     * @param message ExportUserEventsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IExportUserEventsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ExportUserEventsResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ExportUserEventsResponse.verify|verify} messages.
                     * @param message ExportUserEventsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IExportUserEventsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ExportUserEventsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ExportUserEventsResponse
                     * @throws {Error} If the payload is not 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.retail.v2beta.ExportUserEventsResponse;

                    /**
                     * Decodes an ExportUserEventsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ExportUserEventsResponse
                     * @throws {Error} If the payload 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.retail.v2beta.ExportUserEventsResponse;

                    /**
                     * Verifies an ExportUserEventsResponse message.
                     * @param message Plain 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 ExportUserEventsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ExportUserEventsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ExportUserEventsResponse;

                    /**
                     * Creates a plain object from an ExportUserEventsResponse message. Also converts values to other types if specified.
                     * @param message ExportUserEventsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ExportUserEventsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ExportUserEventsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ExportUserEventsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ExportAnalyticsMetricsResponse. */
                interface IExportAnalyticsMetricsResponse {

                    /** ExportAnalyticsMetricsResponse errorSamples */
                    errorSamples?: (google.rpc.IStatus[]|null);

                    /** ExportAnalyticsMetricsResponse errorsConfig */
                    errorsConfig?: (google.cloud.retail.v2beta.IExportErrorsConfig|null);

                    /** ExportAnalyticsMetricsResponse outputResult */
                    outputResult?: (google.cloud.retail.v2beta.IOutputResult|null);
                }

                /** Represents an ExportAnalyticsMetricsResponse. */
                class ExportAnalyticsMetricsResponse implements IExportAnalyticsMetricsResponse {

                    /**
                     * Constructs a new ExportAnalyticsMetricsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IExportAnalyticsMetricsResponse);

                    /** ExportAnalyticsMetricsResponse errorSamples. */
                    public errorSamples: google.rpc.IStatus[];

                    /** ExportAnalyticsMetricsResponse errorsConfig. */
                    public errorsConfig?: (google.cloud.retail.v2beta.IExportErrorsConfig|null);

                    /** ExportAnalyticsMetricsResponse outputResult. */
                    public outputResult?: (google.cloud.retail.v2beta.IOutputResult|null);

                    /**
                     * Creates a new ExportAnalyticsMetricsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ExportAnalyticsMetricsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IExportAnalyticsMetricsResponse): google.cloud.retail.v2beta.ExportAnalyticsMetricsResponse;

                    /**
                     * Encodes the specified ExportAnalyticsMetricsResponse message. Does not implicitly {@link google.cloud.retail.v2beta.ExportAnalyticsMetricsResponse.verify|verify} messages.
                     * @param message ExportAnalyticsMetricsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IExportAnalyticsMetricsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ExportAnalyticsMetricsResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ExportAnalyticsMetricsResponse.verify|verify} messages.
                     * @param message ExportAnalyticsMetricsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IExportAnalyticsMetricsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ExportAnalyticsMetricsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ExportAnalyticsMetricsResponse
                     * @throws {Error} If the payload is not 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.retail.v2beta.ExportAnalyticsMetricsResponse;

                    /**
                     * Decodes an ExportAnalyticsMetricsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ExportAnalyticsMetricsResponse
                     * @throws {Error} If the payload 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.retail.v2beta.ExportAnalyticsMetricsResponse;

                    /**
                     * Verifies an ExportAnalyticsMetricsResponse message.
                     * @param message Plain 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 ExportAnalyticsMetricsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ExportAnalyticsMetricsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ExportAnalyticsMetricsResponse;

                    /**
                     * Creates a plain object from an ExportAnalyticsMetricsResponse message. Also converts values to other types if specified.
                     * @param message ExportAnalyticsMetricsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ExportAnalyticsMetricsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ExportAnalyticsMetricsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ExportAnalyticsMetricsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an OutputResult. */
                interface IOutputResult {

                    /** OutputResult bigqueryResult */
                    bigqueryResult?: (google.cloud.retail.v2beta.IBigQueryOutputResult[]|null);

                    /** OutputResult gcsResult */
                    gcsResult?: (google.cloud.retail.v2beta.IGcsOutputResult[]|null);
                }

                /** Represents an OutputResult. */
                class OutputResult implements IOutputResult {

                    /**
                     * Constructs a new OutputResult.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IOutputResult);

                    /** OutputResult bigqueryResult. */
                    public bigqueryResult: google.cloud.retail.v2beta.IBigQueryOutputResult[];

                    /** OutputResult gcsResult. */
                    public gcsResult: google.cloud.retail.v2beta.IGcsOutputResult[];

                    /**
                     * Creates a new OutputResult instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns OutputResult instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IOutputResult): google.cloud.retail.v2beta.OutputResult;

                    /**
                     * Encodes the specified OutputResult message. Does not implicitly {@link google.cloud.retail.v2beta.OutputResult.verify|verify} messages.
                     * @param message OutputResult message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IOutputResult, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified OutputResult message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.OutputResult.verify|verify} messages.
                     * @param message OutputResult message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IOutputResult, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an OutputResult message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns OutputResult
                     * @throws {Error} If the payload is not 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.retail.v2beta.OutputResult;

                    /**
                     * Decodes an OutputResult message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns OutputResult
                     * @throws {Error} If the payload 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.retail.v2beta.OutputResult;

                    /**
                     * Verifies an OutputResult message.
                     * @param message Plain 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 OutputResult message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns OutputResult
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.OutputResult;

                    /**
                     * Creates a plain object from an OutputResult message. Also converts values to other types if specified.
                     * @param message OutputResult
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.OutputResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this OutputResult to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for OutputResult
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a BigQueryOutputResult. */
                interface IBigQueryOutputResult {

                    /** BigQueryOutputResult datasetId */
                    datasetId?: (string|null);

                    /** BigQueryOutputResult tableId */
                    tableId?: (string|null);
                }

                /** Represents a BigQueryOutputResult. */
                class BigQueryOutputResult implements IBigQueryOutputResult {

                    /**
                     * Constructs a new BigQueryOutputResult.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IBigQueryOutputResult);

                    /** BigQueryOutputResult datasetId. */
                    public datasetId: string;

                    /** BigQueryOutputResult tableId. */
                    public tableId: string;

                    /**
                     * Creates a new BigQueryOutputResult instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns BigQueryOutputResult instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IBigQueryOutputResult): google.cloud.retail.v2beta.BigQueryOutputResult;

                    /**
                     * Encodes the specified BigQueryOutputResult message. Does not implicitly {@link google.cloud.retail.v2beta.BigQueryOutputResult.verify|verify} messages.
                     * @param message BigQueryOutputResult message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IBigQueryOutputResult, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified BigQueryOutputResult message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.BigQueryOutputResult.verify|verify} messages.
                     * @param message BigQueryOutputResult message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IBigQueryOutputResult, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a BigQueryOutputResult message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns BigQueryOutputResult
                     * @throws {Error} If the payload is not 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.retail.v2beta.BigQueryOutputResult;

                    /**
                     * Decodes a BigQueryOutputResult message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns BigQueryOutputResult
                     * @throws {Error} If the payload 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.retail.v2beta.BigQueryOutputResult;

                    /**
                     * Verifies a BigQueryOutputResult message.
                     * @param message Plain 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 BigQueryOutputResult message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns BigQueryOutputResult
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.BigQueryOutputResult;

                    /**
                     * Creates a plain object from a BigQueryOutputResult message. Also converts values to other types if specified.
                     * @param message BigQueryOutputResult
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.BigQueryOutputResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this BigQueryOutputResult to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for BigQueryOutputResult
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GcsOutputResult. */
                interface IGcsOutputResult {

                    /** GcsOutputResult outputUri */
                    outputUri?: (string|null);
                }

                /** Represents a GcsOutputResult. */
                class GcsOutputResult implements IGcsOutputResult {

                    /**
                     * Constructs a new GcsOutputResult.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IGcsOutputResult);

                    /** GcsOutputResult outputUri. */
                    public outputUri: string;

                    /**
                     * Creates a new GcsOutputResult instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GcsOutputResult instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IGcsOutputResult): google.cloud.retail.v2beta.GcsOutputResult;

                    /**
                     * Encodes the specified GcsOutputResult message. Does not implicitly {@link google.cloud.retail.v2beta.GcsOutputResult.verify|verify} messages.
                     * @param message GcsOutputResult message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IGcsOutputResult, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GcsOutputResult message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.GcsOutputResult.verify|verify} messages.
                     * @param message GcsOutputResult message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IGcsOutputResult, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GcsOutputResult message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GcsOutputResult
                     * @throws {Error} If the payload is not 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.retail.v2beta.GcsOutputResult;

                    /**
                     * Decodes a GcsOutputResult message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GcsOutputResult
                     * @throws {Error} If the payload 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.retail.v2beta.GcsOutputResult;

                    /**
                     * Verifies a GcsOutputResult message.
                     * @param message Plain 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 GcsOutputResult message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GcsOutputResult
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.GcsOutputResult;

                    /**
                     * Creates a plain object from a GcsOutputResult message. Also converts values to other types if specified.
                     * @param message GcsOutputResult
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.GcsOutputResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GcsOutputResult to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GcsOutputResult
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ProductLevelConfig. */
                interface IProductLevelConfig {

                    /** ProductLevelConfig ingestionProductType */
                    ingestionProductType?: (string|null);

                    /** ProductLevelConfig merchantCenterProductIdField */
                    merchantCenterProductIdField?: (string|null);
                }

                /** Represents a ProductLevelConfig. */
                class ProductLevelConfig implements IProductLevelConfig {

                    /**
                     * Constructs a new ProductLevelConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IProductLevelConfig);

                    /** ProductLevelConfig ingestionProductType. */
                    public ingestionProductType: string;

                    /** ProductLevelConfig merchantCenterProductIdField. */
                    public merchantCenterProductIdField: string;

                    /**
                     * Creates a new ProductLevelConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ProductLevelConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IProductLevelConfig): google.cloud.retail.v2beta.ProductLevelConfig;

                    /**
                     * Encodes the specified ProductLevelConfig message. Does not implicitly {@link google.cloud.retail.v2beta.ProductLevelConfig.verify|verify} messages.
                     * @param message ProductLevelConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IProductLevelConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ProductLevelConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ProductLevelConfig.verify|verify} messages.
                     * @param message ProductLevelConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IProductLevelConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ProductLevelConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ProductLevelConfig
                     * @throws {Error} If the payload is not 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.retail.v2beta.ProductLevelConfig;

                    /**
                     * Decodes a ProductLevelConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ProductLevelConfig
                     * @throws {Error} If the payload 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.retail.v2beta.ProductLevelConfig;

                    /**
                     * Verifies a ProductLevelConfig message.
                     * @param message Plain 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 ProductLevelConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ProductLevelConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ProductLevelConfig;

                    /**
                     * Creates a plain object from a ProductLevelConfig message. Also converts values to other types if specified.
                     * @param message ProductLevelConfig
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ProductLevelConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ProductLevelConfig to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ProductLevelConfig
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CatalogAttribute. */
                interface ICatalogAttribute {

                    /** CatalogAttribute key */
                    key?: (string|null);

                    /** CatalogAttribute inUse */
                    inUse?: (boolean|null);

                    /** CatalogAttribute type */
                    type?: (google.cloud.retail.v2beta.CatalogAttribute.AttributeType|keyof typeof google.cloud.retail.v2beta.CatalogAttribute.AttributeType|null);

                    /** CatalogAttribute indexableOption */
                    indexableOption?: (google.cloud.retail.v2beta.CatalogAttribute.IndexableOption|keyof typeof google.cloud.retail.v2beta.CatalogAttribute.IndexableOption|null);

                    /** CatalogAttribute dynamicFacetableOption */
                    dynamicFacetableOption?: (google.cloud.retail.v2beta.CatalogAttribute.DynamicFacetableOption|keyof typeof google.cloud.retail.v2beta.CatalogAttribute.DynamicFacetableOption|null);

                    /** CatalogAttribute searchableOption */
                    searchableOption?: (google.cloud.retail.v2beta.CatalogAttribute.SearchableOption|keyof typeof google.cloud.retail.v2beta.CatalogAttribute.SearchableOption|null);

                    /** CatalogAttribute recommendationsFilteringOption */
                    recommendationsFilteringOption?: (google.cloud.retail.v2beta.RecommendationsFilteringOption|keyof typeof google.cloud.retail.v2beta.RecommendationsFilteringOption|null);

                    /** CatalogAttribute exactSearchableOption */
                    exactSearchableOption?: (google.cloud.retail.v2beta.CatalogAttribute.ExactSearchableOption|keyof typeof google.cloud.retail.v2beta.CatalogAttribute.ExactSearchableOption|null);

                    /** CatalogAttribute retrievableOption */
                    retrievableOption?: (google.cloud.retail.v2beta.CatalogAttribute.RetrievableOption|keyof typeof google.cloud.retail.v2beta.CatalogAttribute.RetrievableOption|null);

                    /** CatalogAttribute facetConfig */
                    facetConfig?: (google.cloud.retail.v2beta.CatalogAttribute.IFacetConfig|null);
                }

                /** Represents a CatalogAttribute. */
                class CatalogAttribute implements ICatalogAttribute {

                    /**
                     * Constructs a new CatalogAttribute.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.ICatalogAttribute);

                    /** CatalogAttribute key. */
                    public key: string;

                    /** CatalogAttribute inUse. */
                    public inUse: boolean;

                    /** CatalogAttribute type. */
                    public type: (google.cloud.retail.v2beta.CatalogAttribute.AttributeType|keyof typeof google.cloud.retail.v2beta.CatalogAttribute.AttributeType);

                    /** CatalogAttribute indexableOption. */
                    public indexableOption: (google.cloud.retail.v2beta.CatalogAttribute.IndexableOption|keyof typeof google.cloud.retail.v2beta.CatalogAttribute.IndexableOption);

                    /** CatalogAttribute dynamicFacetableOption. */
                    public dynamicFacetableOption: (google.cloud.retail.v2beta.CatalogAttribute.DynamicFacetableOption|keyof typeof google.cloud.retail.v2beta.CatalogAttribute.DynamicFacetableOption);

                    /** CatalogAttribute searchableOption. */
                    public searchableOption: (google.cloud.retail.v2beta.CatalogAttribute.SearchableOption|keyof typeof google.cloud.retail.v2beta.CatalogAttribute.SearchableOption);

                    /** CatalogAttribute recommendationsFilteringOption. */
                    public recommendationsFilteringOption: (google.cloud.retail.v2beta.RecommendationsFilteringOption|keyof typeof google.cloud.retail.v2beta.RecommendationsFilteringOption);

                    /** CatalogAttribute exactSearchableOption. */
                    public exactSearchableOption: (google.cloud.retail.v2beta.CatalogAttribute.ExactSearchableOption|keyof typeof google.cloud.retail.v2beta.CatalogAttribute.ExactSearchableOption);

                    /** CatalogAttribute retrievableOption. */
                    public retrievableOption: (google.cloud.retail.v2beta.CatalogAttribute.RetrievableOption|keyof typeof google.cloud.retail.v2beta.CatalogAttribute.RetrievableOption);

                    /** CatalogAttribute facetConfig. */
                    public facetConfig?: (google.cloud.retail.v2beta.CatalogAttribute.IFacetConfig|null);

                    /**
                     * Creates a new CatalogAttribute instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CatalogAttribute instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.ICatalogAttribute): google.cloud.retail.v2beta.CatalogAttribute;

                    /**
                     * Encodes the specified CatalogAttribute message. Does not implicitly {@link google.cloud.retail.v2beta.CatalogAttribute.verify|verify} messages.
                     * @param message CatalogAttribute message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.ICatalogAttribute, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CatalogAttribute message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.CatalogAttribute.verify|verify} messages.
                     * @param message CatalogAttribute message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.ICatalogAttribute, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CatalogAttribute message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CatalogAttribute
                     * @throws {Error} If the payload is not 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.retail.v2beta.CatalogAttribute;

                    /**
                     * Decodes a CatalogAttribute message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CatalogAttribute
                     * @throws {Error} If the payload 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.retail.v2beta.CatalogAttribute;

                    /**
                     * Verifies a CatalogAttribute message.
                     * @param message Plain 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 CatalogAttribute message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CatalogAttribute
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.CatalogAttribute;

                    /**
                     * Creates a plain object from a CatalogAttribute message. Also converts values to other types if specified.
                     * @param message CatalogAttribute
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.CatalogAttribute, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CatalogAttribute to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CatalogAttribute
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace CatalogAttribute {

                    /** Properties of a FacetConfig. */
                    interface IFacetConfig {

                        /** FacetConfig facetIntervals */
                        facetIntervals?: (google.cloud.retail.v2beta.IInterval[]|null);

                        /** FacetConfig ignoredFacetValues */
                        ignoredFacetValues?: (google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.IIgnoredFacetValues[]|null);

                        /** FacetConfig mergedFacetValues */
                        mergedFacetValues?: (google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.IMergedFacetValue[]|null);

                        /** FacetConfig mergedFacet */
                        mergedFacet?: (google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.IMergedFacet|null);

                        /** FacetConfig rerankConfig */
                        rerankConfig?: (google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.IRerankConfig|null);
                    }

                    /** Represents a FacetConfig. */
                    class FacetConfig implements IFacetConfig {

                        /**
                         * Constructs a new FacetConfig.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.CatalogAttribute.IFacetConfig);

                        /** FacetConfig facetIntervals. */
                        public facetIntervals: google.cloud.retail.v2beta.IInterval[];

                        /** FacetConfig ignoredFacetValues. */
                        public ignoredFacetValues: google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.IIgnoredFacetValues[];

                        /** FacetConfig mergedFacetValues. */
                        public mergedFacetValues: google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.IMergedFacetValue[];

                        /** FacetConfig mergedFacet. */
                        public mergedFacet?: (google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.IMergedFacet|null);

                        /** FacetConfig rerankConfig. */
                        public rerankConfig?: (google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.IRerankConfig|null);

                        /**
                         * Creates a new FacetConfig instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FacetConfig instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.CatalogAttribute.IFacetConfig): google.cloud.retail.v2beta.CatalogAttribute.FacetConfig;

                        /**
                         * Encodes the specified FacetConfig message. Does not implicitly {@link google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.verify|verify} messages.
                         * @param message FacetConfig message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.CatalogAttribute.IFacetConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FacetConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.verify|verify} messages.
                         * @param message FacetConfig message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.CatalogAttribute.IFacetConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FacetConfig message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FacetConfig
                         * @throws {Error} If the payload is not 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.retail.v2beta.CatalogAttribute.FacetConfig;

                        /**
                         * Decodes a FacetConfig message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FacetConfig
                         * @throws {Error} If the payload 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.retail.v2beta.CatalogAttribute.FacetConfig;

                        /**
                         * Verifies a FacetConfig message.
                         * @param message Plain 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 FacetConfig message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FacetConfig
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.CatalogAttribute.FacetConfig;

                        /**
                         * Creates a plain object from a FacetConfig message. Also converts values to other types if specified.
                         * @param message FacetConfig
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.CatalogAttribute.FacetConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FacetConfig to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FacetConfig
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace FacetConfig {

                        /** Properties of an IgnoredFacetValues. */
                        interface IIgnoredFacetValues {

                            /** IgnoredFacetValues values */
                            values?: (string[]|null);

                            /** IgnoredFacetValues startTime */
                            startTime?: (google.protobuf.ITimestamp|null);

                            /** IgnoredFacetValues endTime */
                            endTime?: (google.protobuf.ITimestamp|null);
                        }

                        /** Represents an IgnoredFacetValues. */
                        class IgnoredFacetValues implements IIgnoredFacetValues {

                            /**
                             * Constructs a new IgnoredFacetValues.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.IIgnoredFacetValues);

                            /** IgnoredFacetValues values. */
                            public values: string[];

                            /** IgnoredFacetValues startTime. */
                            public startTime?: (google.protobuf.ITimestamp|null);

                            /** IgnoredFacetValues endTime. */
                            public endTime?: (google.protobuf.ITimestamp|null);

                            /**
                             * Creates a new IgnoredFacetValues instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns IgnoredFacetValues instance
                             */
                            public static create(properties?: google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.IIgnoredFacetValues): google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.IgnoredFacetValues;

                            /**
                             * Encodes the specified IgnoredFacetValues message. Does not implicitly {@link google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.IgnoredFacetValues.verify|verify} messages.
                             * @param message IgnoredFacetValues message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.IIgnoredFacetValues, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified IgnoredFacetValues message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.IgnoredFacetValues.verify|verify} messages.
                             * @param message IgnoredFacetValues message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.IIgnoredFacetValues, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an IgnoredFacetValues message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns IgnoredFacetValues
                             * @throws {Error} If the payload is not 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.retail.v2beta.CatalogAttribute.FacetConfig.IgnoredFacetValues;

                            /**
                             * Decodes an IgnoredFacetValues message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns IgnoredFacetValues
                             * @throws {Error} If the payload 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.retail.v2beta.CatalogAttribute.FacetConfig.IgnoredFacetValues;

                            /**
                             * Verifies an IgnoredFacetValues message.
                             * @param message Plain 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 IgnoredFacetValues message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns IgnoredFacetValues
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.IgnoredFacetValues;

                            /**
                             * Creates a plain object from an IgnoredFacetValues message. Also converts values to other types if specified.
                             * @param message IgnoredFacetValues
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.IgnoredFacetValues, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this IgnoredFacetValues to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for IgnoredFacetValues
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a MergedFacetValue. */
                        interface IMergedFacetValue {

                            /** MergedFacetValue values */
                            values?: (string[]|null);

                            /** MergedFacetValue mergedValue */
                            mergedValue?: (string|null);
                        }

                        /** Represents a MergedFacetValue. */
                        class MergedFacetValue implements IMergedFacetValue {

                            /**
                             * Constructs a new MergedFacetValue.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.IMergedFacetValue);

                            /** MergedFacetValue values. */
                            public values: string[];

                            /** MergedFacetValue mergedValue. */
                            public mergedValue: string;

                            /**
                             * Creates a new MergedFacetValue instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns MergedFacetValue instance
                             */
                            public static create(properties?: google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.IMergedFacetValue): google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.MergedFacetValue;

                            /**
                             * Encodes the specified MergedFacetValue message. Does not implicitly {@link google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.MergedFacetValue.verify|verify} messages.
                             * @param message MergedFacetValue message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.IMergedFacetValue, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified MergedFacetValue message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.MergedFacetValue.verify|verify} messages.
                             * @param message MergedFacetValue message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.IMergedFacetValue, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a MergedFacetValue message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns MergedFacetValue
                             * @throws {Error} If the payload is not 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.retail.v2beta.CatalogAttribute.FacetConfig.MergedFacetValue;

                            /**
                             * Decodes a MergedFacetValue message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns MergedFacetValue
                             * @throws {Error} If the payload 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.retail.v2beta.CatalogAttribute.FacetConfig.MergedFacetValue;

                            /**
                             * Verifies a MergedFacetValue message.
                             * @param message Plain 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 MergedFacetValue message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns MergedFacetValue
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.MergedFacetValue;

                            /**
                             * Creates a plain object from a MergedFacetValue message. Also converts values to other types if specified.
                             * @param message MergedFacetValue
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.MergedFacetValue, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this MergedFacetValue to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for MergedFacetValue
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a MergedFacet. */
                        interface IMergedFacet {

                            /** MergedFacet mergedFacetKey */
                            mergedFacetKey?: (string|null);
                        }

                        /** Represents a MergedFacet. */
                        class MergedFacet implements IMergedFacet {

                            /**
                             * Constructs a new MergedFacet.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.IMergedFacet);

                            /** MergedFacet mergedFacetKey. */
                            public mergedFacetKey: string;

                            /**
                             * Creates a new MergedFacet instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns MergedFacet instance
                             */
                            public static create(properties?: google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.IMergedFacet): google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.MergedFacet;

                            /**
                             * Encodes the specified MergedFacet message. Does not implicitly {@link google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.MergedFacet.verify|verify} messages.
                             * @param message MergedFacet message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.IMergedFacet, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified MergedFacet message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.MergedFacet.verify|verify} messages.
                             * @param message MergedFacet message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.IMergedFacet, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a MergedFacet message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns MergedFacet
                             * @throws {Error} If the payload is not 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.retail.v2beta.CatalogAttribute.FacetConfig.MergedFacet;

                            /**
                             * Decodes a MergedFacet message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns MergedFacet
                             * @throws {Error} If the payload 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.retail.v2beta.CatalogAttribute.FacetConfig.MergedFacet;

                            /**
                             * Verifies a MergedFacet message.
                             * @param message Plain 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 MergedFacet message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns MergedFacet
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.MergedFacet;

                            /**
                             * Creates a plain object from a MergedFacet message. Also converts values to other types if specified.
                             * @param message MergedFacet
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.MergedFacet, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this MergedFacet to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for MergedFacet
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of a RerankConfig. */
                        interface IRerankConfig {

                            /** RerankConfig rerankFacet */
                            rerankFacet?: (boolean|null);

                            /** RerankConfig facetValues */
                            facetValues?: (string[]|null);
                        }

                        /** Represents a RerankConfig. */
                        class RerankConfig implements IRerankConfig {

                            /**
                             * Constructs a new RerankConfig.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.IRerankConfig);

                            /** RerankConfig rerankFacet. */
                            public rerankFacet: boolean;

                            /** RerankConfig facetValues. */
                            public facetValues: string[];

                            /**
                             * Creates a new RerankConfig instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns RerankConfig instance
                             */
                            public static create(properties?: google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.IRerankConfig): google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.RerankConfig;

                            /**
                             * Encodes the specified RerankConfig message. Does not implicitly {@link google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.RerankConfig.verify|verify} messages.
                             * @param message RerankConfig message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.IRerankConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified RerankConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.RerankConfig.verify|verify} messages.
                             * @param message RerankConfig message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.IRerankConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a RerankConfig message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns RerankConfig
                             * @throws {Error} If the payload is not 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.retail.v2beta.CatalogAttribute.FacetConfig.RerankConfig;

                            /**
                             * Decodes a RerankConfig message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns RerankConfig
                             * @throws {Error} If the payload 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.retail.v2beta.CatalogAttribute.FacetConfig.RerankConfig;

                            /**
                             * Verifies a RerankConfig message.
                             * @param message Plain 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 RerankConfig message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns RerankConfig
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.RerankConfig;

                            /**
                             * Creates a plain object from a RerankConfig message. Also converts values to other types if specified.
                             * @param message RerankConfig
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.retail.v2beta.CatalogAttribute.FacetConfig.RerankConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this RerankConfig to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for RerankConfig
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** AttributeType enum. */
                    enum AttributeType {
                        UNKNOWN = 0,
                        TEXTUAL = 1,
                        NUMERICAL = 2
                    }

                    /** IndexableOption enum. */
                    enum IndexableOption {
                        INDEXABLE_OPTION_UNSPECIFIED = 0,
                        INDEXABLE_ENABLED = 1,
                        INDEXABLE_DISABLED = 2
                    }

                    /** DynamicFacetableOption enum. */
                    enum DynamicFacetableOption {
                        DYNAMIC_FACETABLE_OPTION_UNSPECIFIED = 0,
                        DYNAMIC_FACETABLE_ENABLED = 1,
                        DYNAMIC_FACETABLE_DISABLED = 2
                    }

                    /** SearchableOption enum. */
                    enum SearchableOption {
                        SEARCHABLE_OPTION_UNSPECIFIED = 0,
                        SEARCHABLE_ENABLED = 1,
                        SEARCHABLE_DISABLED = 2
                    }

                    /** ExactSearchableOption enum. */
                    enum ExactSearchableOption {
                        EXACT_SEARCHABLE_OPTION_UNSPECIFIED = 0,
                        EXACT_SEARCHABLE_ENABLED = 1,
                        EXACT_SEARCHABLE_DISABLED = 2
                    }

                    /** RetrievableOption enum. */
                    enum RetrievableOption {
                        RETRIEVABLE_OPTION_UNSPECIFIED = 0,
                        RETRIEVABLE_ENABLED = 1,
                        RETRIEVABLE_DISABLED = 2
                    }
                }

                /** Properties of an AttributesConfig. */
                interface IAttributesConfig {

                    /** AttributesConfig name */
                    name?: (string|null);

                    /** AttributesConfig catalogAttributes */
                    catalogAttributes?: ({ [k: string]: google.cloud.retail.v2beta.ICatalogAttribute }|null);

                    /** AttributesConfig attributeConfigLevel */
                    attributeConfigLevel?: (google.cloud.retail.v2beta.AttributeConfigLevel|keyof typeof google.cloud.retail.v2beta.AttributeConfigLevel|null);
                }

                /** Represents an AttributesConfig. */
                class AttributesConfig implements IAttributesConfig {

                    /**
                     * Constructs a new AttributesConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IAttributesConfig);

                    /** AttributesConfig name. */
                    public name: string;

                    /** AttributesConfig catalogAttributes. */
                    public catalogAttributes: { [k: string]: google.cloud.retail.v2beta.ICatalogAttribute };

                    /** AttributesConfig attributeConfigLevel. */
                    public attributeConfigLevel: (google.cloud.retail.v2beta.AttributeConfigLevel|keyof typeof google.cloud.retail.v2beta.AttributeConfigLevel);

                    /**
                     * Creates a new AttributesConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns AttributesConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IAttributesConfig): google.cloud.retail.v2beta.AttributesConfig;

                    /**
                     * Encodes the specified AttributesConfig message. Does not implicitly {@link google.cloud.retail.v2beta.AttributesConfig.verify|verify} messages.
                     * @param message AttributesConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IAttributesConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified AttributesConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.AttributesConfig.verify|verify} messages.
                     * @param message AttributesConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IAttributesConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an AttributesConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns AttributesConfig
                     * @throws {Error} If the payload is not 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.retail.v2beta.AttributesConfig;

                    /**
                     * Decodes an AttributesConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns AttributesConfig
                     * @throws {Error} If the payload 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.retail.v2beta.AttributesConfig;

                    /**
                     * Verifies an AttributesConfig message.
                     * @param message Plain 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 AttributesConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns AttributesConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.AttributesConfig;

                    /**
                     * Creates a plain object from an AttributesConfig message. Also converts values to other types if specified.
                     * @param message AttributesConfig
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.AttributesConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this AttributesConfig to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for AttributesConfig
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CompletionConfig. */
                interface ICompletionConfig {

                    /** CompletionConfig name */
                    name?: (string|null);

                    /** CompletionConfig matchingOrder */
                    matchingOrder?: (string|null);

                    /** CompletionConfig maxSuggestions */
                    maxSuggestions?: (number|null);

                    /** CompletionConfig minPrefixLength */
                    minPrefixLength?: (number|null);

                    /** CompletionConfig autoLearning */
                    autoLearning?: (boolean|null);

                    /** CompletionConfig suggestionsInputConfig */
                    suggestionsInputConfig?: (google.cloud.retail.v2beta.ICompletionDataInputConfig|null);

                    /** CompletionConfig lastSuggestionsImportOperation */
                    lastSuggestionsImportOperation?: (string|null);

                    /** CompletionConfig denylistInputConfig */
                    denylistInputConfig?: (google.cloud.retail.v2beta.ICompletionDataInputConfig|null);

                    /** CompletionConfig lastDenylistImportOperation */
                    lastDenylistImportOperation?: (string|null);

                    /** CompletionConfig allowlistInputConfig */
                    allowlistInputConfig?: (google.cloud.retail.v2beta.ICompletionDataInputConfig|null);

                    /** CompletionConfig lastAllowlistImportOperation */
                    lastAllowlistImportOperation?: (string|null);
                }

                /** Represents a CompletionConfig. */
                class CompletionConfig implements ICompletionConfig {

                    /**
                     * Constructs a new CompletionConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.ICompletionConfig);

                    /** CompletionConfig name. */
                    public name: string;

                    /** CompletionConfig matchingOrder. */
                    public matchingOrder: string;

                    /** CompletionConfig maxSuggestions. */
                    public maxSuggestions: number;

                    /** CompletionConfig minPrefixLength. */
                    public minPrefixLength: number;

                    /** CompletionConfig autoLearning. */
                    public autoLearning: boolean;

                    /** CompletionConfig suggestionsInputConfig. */
                    public suggestionsInputConfig?: (google.cloud.retail.v2beta.ICompletionDataInputConfig|null);

                    /** CompletionConfig lastSuggestionsImportOperation. */
                    public lastSuggestionsImportOperation: string;

                    /** CompletionConfig denylistInputConfig. */
                    public denylistInputConfig?: (google.cloud.retail.v2beta.ICompletionDataInputConfig|null);

                    /** CompletionConfig lastDenylistImportOperation. */
                    public lastDenylistImportOperation: string;

                    /** CompletionConfig allowlistInputConfig. */
                    public allowlistInputConfig?: (google.cloud.retail.v2beta.ICompletionDataInputConfig|null);

                    /** CompletionConfig lastAllowlistImportOperation. */
                    public lastAllowlistImportOperation: string;

                    /**
                     * Creates a new CompletionConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CompletionConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.ICompletionConfig): google.cloud.retail.v2beta.CompletionConfig;

                    /**
                     * Encodes the specified CompletionConfig message. Does not implicitly {@link google.cloud.retail.v2beta.CompletionConfig.verify|verify} messages.
                     * @param message CompletionConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.ICompletionConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CompletionConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.CompletionConfig.verify|verify} messages.
                     * @param message CompletionConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.ICompletionConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CompletionConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CompletionConfig
                     * @throws {Error} If the payload is not 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.retail.v2beta.CompletionConfig;

                    /**
                     * Decodes a CompletionConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CompletionConfig
                     * @throws {Error} If the payload 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.retail.v2beta.CompletionConfig;

                    /**
                     * Verifies a CompletionConfig message.
                     * @param message Plain 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 CompletionConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CompletionConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.CompletionConfig;

                    /**
                     * Creates a plain object from a CompletionConfig message. Also converts values to other types if specified.
                     * @param message CompletionConfig
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.CompletionConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CompletionConfig to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CompletionConfig
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a MerchantCenterLink. */
                interface IMerchantCenterLink {

                    /** MerchantCenterLink merchantCenterAccountId */
                    merchantCenterAccountId?: (number|Long|string|null);

                    /** MerchantCenterLink branchId */
                    branchId?: (string|null);

                    /** MerchantCenterLink destinations */
                    destinations?: (string[]|null);

                    /** MerchantCenterLink regionCode */
                    regionCode?: (string|null);

                    /** MerchantCenterLink languageCode */
                    languageCode?: (string|null);

                    /** MerchantCenterLink feeds */
                    feeds?: (google.cloud.retail.v2beta.IMerchantCenterFeedFilter[]|null);
                }

                /** Represents a MerchantCenterLink. */
                class MerchantCenterLink implements IMerchantCenterLink {

                    /**
                     * Constructs a new MerchantCenterLink.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IMerchantCenterLink);

                    /** MerchantCenterLink merchantCenterAccountId. */
                    public merchantCenterAccountId: (number|Long|string);

                    /** MerchantCenterLink branchId. */
                    public branchId: string;

                    /** MerchantCenterLink destinations. */
                    public destinations: string[];

                    /** MerchantCenterLink regionCode. */
                    public regionCode: string;

                    /** MerchantCenterLink languageCode. */
                    public languageCode: string;

                    /** MerchantCenterLink feeds. */
                    public feeds: google.cloud.retail.v2beta.IMerchantCenterFeedFilter[];

                    /**
                     * Creates a new MerchantCenterLink instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns MerchantCenterLink instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IMerchantCenterLink): google.cloud.retail.v2beta.MerchantCenterLink;

                    /**
                     * Encodes the specified MerchantCenterLink message. Does not implicitly {@link google.cloud.retail.v2beta.MerchantCenterLink.verify|verify} messages.
                     * @param message MerchantCenterLink message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IMerchantCenterLink, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified MerchantCenterLink message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.MerchantCenterLink.verify|verify} messages.
                     * @param message MerchantCenterLink message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IMerchantCenterLink, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a MerchantCenterLink message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns MerchantCenterLink
                     * @throws {Error} If the payload is not 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.retail.v2beta.MerchantCenterLink;

                    /**
                     * Decodes a MerchantCenterLink message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns MerchantCenterLink
                     * @throws {Error} If the payload 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.retail.v2beta.MerchantCenterLink;

                    /**
                     * Verifies a MerchantCenterLink message.
                     * @param message Plain 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 MerchantCenterLink message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns MerchantCenterLink
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.MerchantCenterLink;

                    /**
                     * Creates a plain object from a MerchantCenterLink message. Also converts values to other types if specified.
                     * @param message MerchantCenterLink
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.MerchantCenterLink, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this MerchantCenterLink to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for MerchantCenterLink
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a MerchantCenterFeedFilter. */
                interface IMerchantCenterFeedFilter {

                    /** MerchantCenterFeedFilter primaryFeedId */
                    primaryFeedId?: (number|Long|string|null);

                    /** MerchantCenterFeedFilter primaryFeedName */
                    primaryFeedName?: (string|null);
                }

                /** Represents a MerchantCenterFeedFilter. */
                class MerchantCenterFeedFilter implements IMerchantCenterFeedFilter {

                    /**
                     * Constructs a new MerchantCenterFeedFilter.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IMerchantCenterFeedFilter);

                    /** MerchantCenterFeedFilter primaryFeedId. */
                    public primaryFeedId: (number|Long|string);

                    /** MerchantCenterFeedFilter primaryFeedName. */
                    public primaryFeedName: string;

                    /**
                     * Creates a new MerchantCenterFeedFilter instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns MerchantCenterFeedFilter instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IMerchantCenterFeedFilter): google.cloud.retail.v2beta.MerchantCenterFeedFilter;

                    /**
                     * Encodes the specified MerchantCenterFeedFilter message. Does not implicitly {@link google.cloud.retail.v2beta.MerchantCenterFeedFilter.verify|verify} messages.
                     * @param message MerchantCenterFeedFilter message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IMerchantCenterFeedFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified MerchantCenterFeedFilter message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.MerchantCenterFeedFilter.verify|verify} messages.
                     * @param message MerchantCenterFeedFilter message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IMerchantCenterFeedFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a MerchantCenterFeedFilter message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns MerchantCenterFeedFilter
                     * @throws {Error} If the payload is not 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.retail.v2beta.MerchantCenterFeedFilter;

                    /**
                     * Decodes a MerchantCenterFeedFilter message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns MerchantCenterFeedFilter
                     * @throws {Error} If the payload 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.retail.v2beta.MerchantCenterFeedFilter;

                    /**
                     * Verifies a MerchantCenterFeedFilter message.
                     * @param message Plain 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 MerchantCenterFeedFilter message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns MerchantCenterFeedFilter
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.MerchantCenterFeedFilter;

                    /**
                     * Creates a plain object from a MerchantCenterFeedFilter message. Also converts values to other types if specified.
                     * @param message MerchantCenterFeedFilter
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.MerchantCenterFeedFilter, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this MerchantCenterFeedFilter to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for MerchantCenterFeedFilter
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a MerchantCenterLinkingConfig. */
                interface IMerchantCenterLinkingConfig {

                    /** MerchantCenterLinkingConfig links */
                    links?: (google.cloud.retail.v2beta.IMerchantCenterLink[]|null);
                }

                /** Represents a MerchantCenterLinkingConfig. */
                class MerchantCenterLinkingConfig implements IMerchantCenterLinkingConfig {

                    /**
                     * Constructs a new MerchantCenterLinkingConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IMerchantCenterLinkingConfig);

                    /** MerchantCenterLinkingConfig links. */
                    public links: google.cloud.retail.v2beta.IMerchantCenterLink[];

                    /**
                     * Creates a new MerchantCenterLinkingConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns MerchantCenterLinkingConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IMerchantCenterLinkingConfig): google.cloud.retail.v2beta.MerchantCenterLinkingConfig;

                    /**
                     * Encodes the specified MerchantCenterLinkingConfig message. Does not implicitly {@link google.cloud.retail.v2beta.MerchantCenterLinkingConfig.verify|verify} messages.
                     * @param message MerchantCenterLinkingConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IMerchantCenterLinkingConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified MerchantCenterLinkingConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.MerchantCenterLinkingConfig.verify|verify} messages.
                     * @param message MerchantCenterLinkingConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IMerchantCenterLinkingConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a MerchantCenterLinkingConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns MerchantCenterLinkingConfig
                     * @throws {Error} If the payload is not 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.retail.v2beta.MerchantCenterLinkingConfig;

                    /**
                     * Decodes a MerchantCenterLinkingConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns MerchantCenterLinkingConfig
                     * @throws {Error} If the payload 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.retail.v2beta.MerchantCenterLinkingConfig;

                    /**
                     * Verifies a MerchantCenterLinkingConfig message.
                     * @param message Plain 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 MerchantCenterLinkingConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns MerchantCenterLinkingConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.MerchantCenterLinkingConfig;

                    /**
                     * Creates a plain object from a MerchantCenterLinkingConfig message. Also converts values to other types if specified.
                     * @param message MerchantCenterLinkingConfig
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.MerchantCenterLinkingConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this MerchantCenterLinkingConfig to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for MerchantCenterLinkingConfig
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a Catalog. */
                interface ICatalog {

                    /** Catalog name */
                    name?: (string|null);

                    /** Catalog displayName */
                    displayName?: (string|null);

                    /** Catalog productLevelConfig */
                    productLevelConfig?: (google.cloud.retail.v2beta.IProductLevelConfig|null);

                    /** Catalog merchantCenterLinkingConfig */
                    merchantCenterLinkingConfig?: (google.cloud.retail.v2beta.IMerchantCenterLinkingConfig|null);
                }

                /** Represents a Catalog. */
                class Catalog implements ICatalog {

                    /**
                     * Constructs a new Catalog.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.ICatalog);

                    /** Catalog name. */
                    public name: string;

                    /** Catalog displayName. */
                    public displayName: string;

                    /** Catalog productLevelConfig. */
                    public productLevelConfig?: (google.cloud.retail.v2beta.IProductLevelConfig|null);

                    /** Catalog merchantCenterLinkingConfig. */
                    public merchantCenterLinkingConfig?: (google.cloud.retail.v2beta.IMerchantCenterLinkingConfig|null);

                    /**
                     * Creates a new Catalog instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Catalog instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.ICatalog): google.cloud.retail.v2beta.Catalog;

                    /**
                     * Encodes the specified Catalog message. Does not implicitly {@link google.cloud.retail.v2beta.Catalog.verify|verify} messages.
                     * @param message Catalog message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.ICatalog, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Catalog message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.Catalog.verify|verify} messages.
                     * @param message Catalog message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.ICatalog, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Catalog message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Catalog
                     * @throws {Error} If the payload is not 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.retail.v2beta.Catalog;

                    /**
                     * Decodes a Catalog message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Catalog
                     * @throws {Error} If the payload 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.retail.v2beta.Catalog;

                    /**
                     * Verifies a Catalog message.
                     * @param message Plain 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 Catalog message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Catalog
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.Catalog;

                    /**
                     * Creates a plain object from a Catalog message. Also converts values to other types if specified.
                     * @param message Catalog
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.Catalog, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Catalog to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Catalog
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** AttributeConfigLevel enum. */
                enum AttributeConfigLevel {
                    ATTRIBUTE_CONFIG_LEVEL_UNSPECIFIED = 0,
                    PRODUCT_LEVEL_ATTRIBUTE_CONFIG = 1,
                    CATALOG_LEVEL_ATTRIBUTE_CONFIG = 2
                }

                /** SolutionType enum. */
                enum SolutionType {
                    SOLUTION_TYPE_UNSPECIFIED = 0,
                    SOLUTION_TYPE_RECOMMENDATION = 1,
                    SOLUTION_TYPE_SEARCH = 2
                }

                /** RecommendationsFilteringOption enum. */
                enum RecommendationsFilteringOption {
                    RECOMMENDATIONS_FILTERING_OPTION_UNSPECIFIED = 0,
                    RECOMMENDATIONS_FILTERING_DISABLED = 1,
                    RECOMMENDATIONS_FILTERING_ENABLED = 3
                }

                /** SearchSolutionUseCase enum. */
                enum SearchSolutionUseCase {
                    SEARCH_SOLUTION_USE_CASE_UNSPECIFIED = 0,
                    SEARCH_SOLUTION_USE_CASE_SEARCH = 1,
                    SEARCH_SOLUTION_USE_CASE_BROWSE = 2
                }

                /** Properties of a Condition. */
                interface ICondition {

                    /** Condition queryTerms */
                    queryTerms?: (google.cloud.retail.v2beta.Condition.IQueryTerm[]|null);

                    /** Condition activeTimeRange */
                    activeTimeRange?: (google.cloud.retail.v2beta.Condition.ITimeRange[]|null);

                    /** Condition pageCategories */
                    pageCategories?: (string[]|null);
                }

                /** Represents a Condition. */
                class Condition implements ICondition {

                    /**
                     * Constructs a new Condition.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.ICondition);

                    /** Condition queryTerms. */
                    public queryTerms: google.cloud.retail.v2beta.Condition.IQueryTerm[];

                    /** Condition activeTimeRange. */
                    public activeTimeRange: google.cloud.retail.v2beta.Condition.ITimeRange[];

                    /** Condition pageCategories. */
                    public pageCategories: string[];

                    /**
                     * Creates a new Condition instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Condition instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.ICondition): google.cloud.retail.v2beta.Condition;

                    /**
                     * Encodes the specified Condition message. Does not implicitly {@link google.cloud.retail.v2beta.Condition.verify|verify} messages.
                     * @param message Condition message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.ICondition, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Condition message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.Condition.verify|verify} messages.
                     * @param message Condition message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.ICondition, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Condition message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Condition
                     * @throws {Error} If the payload is not 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.retail.v2beta.Condition;

                    /**
                     * Decodes a Condition message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Condition
                     * @throws {Error} If the payload 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.retail.v2beta.Condition;

                    /**
                     * Verifies a Condition message.
                     * @param message Plain 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 Condition message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Condition
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.Condition;

                    /**
                     * Creates a plain object from a Condition message. Also converts values to other types if specified.
                     * @param message Condition
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.Condition, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Condition to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Condition
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace Condition {

                    /** Properties of a QueryTerm. */
                    interface IQueryTerm {

                        /** QueryTerm value */
                        value?: (string|null);

                        /** QueryTerm fullMatch */
                        fullMatch?: (boolean|null);
                    }

                    /** Represents a QueryTerm. */
                    class QueryTerm implements IQueryTerm {

                        /**
                         * Constructs a new QueryTerm.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.Condition.IQueryTerm);

                        /** QueryTerm value. */
                        public value: string;

                        /** QueryTerm fullMatch. */
                        public fullMatch: boolean;

                        /**
                         * Creates a new QueryTerm instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns QueryTerm instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.Condition.IQueryTerm): google.cloud.retail.v2beta.Condition.QueryTerm;

                        /**
                         * Encodes the specified QueryTerm message. Does not implicitly {@link google.cloud.retail.v2beta.Condition.QueryTerm.verify|verify} messages.
                         * @param message QueryTerm message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.Condition.IQueryTerm, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified QueryTerm message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.Condition.QueryTerm.verify|verify} messages.
                         * @param message QueryTerm message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.Condition.IQueryTerm, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a QueryTerm message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns QueryTerm
                         * @throws {Error} If the payload is not 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.retail.v2beta.Condition.QueryTerm;

                        /**
                         * Decodes a QueryTerm message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns QueryTerm
                         * @throws {Error} If the payload 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.retail.v2beta.Condition.QueryTerm;

                        /**
                         * Verifies a QueryTerm message.
                         * @param message Plain 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 QueryTerm message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns QueryTerm
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.Condition.QueryTerm;

                        /**
                         * Creates a plain object from a QueryTerm message. Also converts values to other types if specified.
                         * @param message QueryTerm
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.Condition.QueryTerm, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this QueryTerm to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for QueryTerm
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a TimeRange. */
                    interface ITimeRange {

                        /** TimeRange startTime */
                        startTime?: (google.protobuf.ITimestamp|null);

                        /** TimeRange endTime */
                        endTime?: (google.protobuf.ITimestamp|null);
                    }

                    /** Represents a TimeRange. */
                    class TimeRange implements ITimeRange {

                        /**
                         * Constructs a new TimeRange.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.Condition.ITimeRange);

                        /** TimeRange startTime. */
                        public startTime?: (google.protobuf.ITimestamp|null);

                        /** TimeRange endTime. */
                        public endTime?: (google.protobuf.ITimestamp|null);

                        /**
                         * Creates a new TimeRange instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TimeRange instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.Condition.ITimeRange): google.cloud.retail.v2beta.Condition.TimeRange;

                        /**
                         * Encodes the specified TimeRange message. Does not implicitly {@link google.cloud.retail.v2beta.Condition.TimeRange.verify|verify} messages.
                         * @param message TimeRange message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.Condition.ITimeRange, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TimeRange message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.Condition.TimeRange.verify|verify} messages.
                         * @param message TimeRange message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.Condition.ITimeRange, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TimeRange message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TimeRange
                         * @throws {Error} If the payload is not 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.retail.v2beta.Condition.TimeRange;

                        /**
                         * Decodes a TimeRange message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TimeRange
                         * @throws {Error} If the payload 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.retail.v2beta.Condition.TimeRange;

                        /**
                         * Verifies a TimeRange message.
                         * @param message Plain 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 TimeRange message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TimeRange
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.Condition.TimeRange;

                        /**
                         * Creates a plain object from a TimeRange message. Also converts values to other types if specified.
                         * @param message TimeRange
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.Condition.TimeRange, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TimeRange to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TimeRange
                         * @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 boostAction */
                    boostAction?: (google.cloud.retail.v2beta.Rule.IBoostAction|null);

                    /** Rule redirectAction */
                    redirectAction?: (google.cloud.retail.v2beta.Rule.IRedirectAction|null);

                    /** Rule onewaySynonymsAction */
                    onewaySynonymsAction?: (google.cloud.retail.v2beta.Rule.IOnewaySynonymsAction|null);

                    /** Rule doNotAssociateAction */
                    doNotAssociateAction?: (google.cloud.retail.v2beta.Rule.IDoNotAssociateAction|null);

                    /** Rule replacementAction */
                    replacementAction?: (google.cloud.retail.v2beta.Rule.IReplacementAction|null);

                    /** Rule ignoreAction */
                    ignoreAction?: (google.cloud.retail.v2beta.Rule.IIgnoreAction|null);

                    /** Rule filterAction */
                    filterAction?: (google.cloud.retail.v2beta.Rule.IFilterAction|null);

                    /** Rule twowaySynonymsAction */
                    twowaySynonymsAction?: (google.cloud.retail.v2beta.Rule.ITwowaySynonymsAction|null);

                    /** Rule forceReturnFacetAction */
                    forceReturnFacetAction?: (google.cloud.retail.v2beta.Rule.IForceReturnFacetAction|null);

                    /** Rule removeFacetAction */
                    removeFacetAction?: (google.cloud.retail.v2beta.Rule.IRemoveFacetAction|null);

                    /** Rule pinAction */
                    pinAction?: (google.cloud.retail.v2beta.Rule.IPinAction|null);

                    /** Rule condition */
                    condition?: (google.cloud.retail.v2beta.ICondition|null);
                }

                /** Represents a Rule. */
                class Rule implements IRule {

                    /**
                     * Constructs a new Rule.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IRule);

                    /** Rule boostAction. */
                    public boostAction?: (google.cloud.retail.v2beta.Rule.IBoostAction|null);

                    /** Rule redirectAction. */
                    public redirectAction?: (google.cloud.retail.v2beta.Rule.IRedirectAction|null);

                    /** Rule onewaySynonymsAction. */
                    public onewaySynonymsAction?: (google.cloud.retail.v2beta.Rule.IOnewaySynonymsAction|null);

                    /** Rule doNotAssociateAction. */
                    public doNotAssociateAction?: (google.cloud.retail.v2beta.Rule.IDoNotAssociateAction|null);

                    /** Rule replacementAction. */
                    public replacementAction?: (google.cloud.retail.v2beta.Rule.IReplacementAction|null);

                    /** Rule ignoreAction. */
                    public ignoreAction?: (google.cloud.retail.v2beta.Rule.IIgnoreAction|null);

                    /** Rule filterAction. */
                    public filterAction?: (google.cloud.retail.v2beta.Rule.IFilterAction|null);

                    /** Rule twowaySynonymsAction. */
                    public twowaySynonymsAction?: (google.cloud.retail.v2beta.Rule.ITwowaySynonymsAction|null);

                    /** Rule forceReturnFacetAction. */
                    public forceReturnFacetAction?: (google.cloud.retail.v2beta.Rule.IForceReturnFacetAction|null);

                    /** Rule removeFacetAction. */
                    public removeFacetAction?: (google.cloud.retail.v2beta.Rule.IRemoveFacetAction|null);

                    /** Rule pinAction. */
                    public pinAction?: (google.cloud.retail.v2beta.Rule.IPinAction|null);

                    /** Rule condition. */
                    public condition?: (google.cloud.retail.v2beta.ICondition|null);

                    /** Rule action. */
                    public action?: ("boostAction"|"redirectAction"|"onewaySynonymsAction"|"doNotAssociateAction"|"replacementAction"|"ignoreAction"|"filterAction"|"twowaySynonymsAction"|"forceReturnFacetAction"|"removeFacetAction"|"pinAction");

                    /**
                     * Creates a new Rule instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Rule instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IRule): google.cloud.retail.v2beta.Rule;

                    /**
                     * Encodes the specified Rule message. Does not implicitly {@link google.cloud.retail.v2beta.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.retail.v2beta.IRule, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Rule message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.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.retail.v2beta.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.retail.v2beta.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.retail.v2beta.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.retail.v2beta.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.retail.v2beta.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 {

                    /** Properties of a BoostAction. */
                    interface IBoostAction {

                        /** BoostAction boost */
                        boost?: (number|null);

                        /** BoostAction productsFilter */
                        productsFilter?: (string|null);
                    }

                    /** Represents a BoostAction. */
                    class BoostAction implements IBoostAction {

                        /**
                         * Constructs a new BoostAction.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.Rule.IBoostAction);

                        /** BoostAction boost. */
                        public boost: number;

                        /** BoostAction productsFilter. */
                        public productsFilter: string;

                        /**
                         * Creates a new BoostAction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BoostAction instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.Rule.IBoostAction): google.cloud.retail.v2beta.Rule.BoostAction;

                        /**
                         * Encodes the specified BoostAction message. Does not implicitly {@link google.cloud.retail.v2beta.Rule.BoostAction.verify|verify} messages.
                         * @param message BoostAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.Rule.IBoostAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BoostAction message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.Rule.BoostAction.verify|verify} messages.
                         * @param message BoostAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.Rule.IBoostAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BoostAction message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BoostAction
                         * @throws {Error} If the payload is not 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.retail.v2beta.Rule.BoostAction;

                        /**
                         * Decodes a BoostAction message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BoostAction
                         * @throws {Error} If the payload 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.retail.v2beta.Rule.BoostAction;

                        /**
                         * Verifies a BoostAction message.
                         * @param message Plain 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 BoostAction message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BoostAction
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.Rule.BoostAction;

                        /**
                         * Creates a plain object from a BoostAction message. Also converts values to other types if specified.
                         * @param message BoostAction
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.Rule.BoostAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BoostAction to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BoostAction
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a FilterAction. */
                    interface IFilterAction {

                        /** FilterAction filter */
                        filter?: (string|null);
                    }

                    /** Represents a FilterAction. */
                    class FilterAction implements IFilterAction {

                        /**
                         * Constructs a new FilterAction.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.Rule.IFilterAction);

                        /** FilterAction filter. */
                        public filter: string;

                        /**
                         * Creates a new FilterAction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FilterAction instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.Rule.IFilterAction): google.cloud.retail.v2beta.Rule.FilterAction;

                        /**
                         * Encodes the specified FilterAction message. Does not implicitly {@link google.cloud.retail.v2beta.Rule.FilterAction.verify|verify} messages.
                         * @param message FilterAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.Rule.IFilterAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FilterAction message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.Rule.FilterAction.verify|verify} messages.
                         * @param message FilterAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.Rule.IFilterAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FilterAction message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FilterAction
                         * @throws {Error} If the payload is not 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.retail.v2beta.Rule.FilterAction;

                        /**
                         * Decodes a FilterAction message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FilterAction
                         * @throws {Error} If the payload 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.retail.v2beta.Rule.FilterAction;

                        /**
                         * Verifies a FilterAction message.
                         * @param message Plain 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 FilterAction message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FilterAction
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.Rule.FilterAction;

                        /**
                         * Creates a plain object from a FilterAction message. Also converts values to other types if specified.
                         * @param message FilterAction
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.Rule.FilterAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FilterAction to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FilterAction
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a RedirectAction. */
                    interface IRedirectAction {

                        /** RedirectAction redirectUri */
                        redirectUri?: (string|null);
                    }

                    /** Represents a RedirectAction. */
                    class RedirectAction implements IRedirectAction {

                        /**
                         * Constructs a new RedirectAction.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.Rule.IRedirectAction);

                        /** RedirectAction redirectUri. */
                        public redirectUri: string;

                        /**
                         * Creates a new RedirectAction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RedirectAction instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.Rule.IRedirectAction): google.cloud.retail.v2beta.Rule.RedirectAction;

                        /**
                         * Encodes the specified RedirectAction message. Does not implicitly {@link google.cloud.retail.v2beta.Rule.RedirectAction.verify|verify} messages.
                         * @param message RedirectAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.Rule.IRedirectAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RedirectAction message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.Rule.RedirectAction.verify|verify} messages.
                         * @param message RedirectAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.Rule.IRedirectAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RedirectAction message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RedirectAction
                         * @throws {Error} If the payload is not 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.retail.v2beta.Rule.RedirectAction;

                        /**
                         * Decodes a RedirectAction message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RedirectAction
                         * @throws {Error} If the payload 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.retail.v2beta.Rule.RedirectAction;

                        /**
                         * Verifies a RedirectAction message.
                         * @param message Plain 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 RedirectAction message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RedirectAction
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.Rule.RedirectAction;

                        /**
                         * Creates a plain object from a RedirectAction message. Also converts values to other types if specified.
                         * @param message RedirectAction
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.Rule.RedirectAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RedirectAction to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RedirectAction
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a TwowaySynonymsAction. */
                    interface ITwowaySynonymsAction {

                        /** TwowaySynonymsAction synonyms */
                        synonyms?: (string[]|null);
                    }

                    /** Represents a TwowaySynonymsAction. */
                    class TwowaySynonymsAction implements ITwowaySynonymsAction {

                        /**
                         * Constructs a new TwowaySynonymsAction.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.Rule.ITwowaySynonymsAction);

                        /** TwowaySynonymsAction synonyms. */
                        public synonyms: string[];

                        /**
                         * Creates a new TwowaySynonymsAction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TwowaySynonymsAction instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.Rule.ITwowaySynonymsAction): google.cloud.retail.v2beta.Rule.TwowaySynonymsAction;

                        /**
                         * Encodes the specified TwowaySynonymsAction message. Does not implicitly {@link google.cloud.retail.v2beta.Rule.TwowaySynonymsAction.verify|verify} messages.
                         * @param message TwowaySynonymsAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.Rule.ITwowaySynonymsAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TwowaySynonymsAction message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.Rule.TwowaySynonymsAction.verify|verify} messages.
                         * @param message TwowaySynonymsAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.Rule.ITwowaySynonymsAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TwowaySynonymsAction message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TwowaySynonymsAction
                         * @throws {Error} If the payload is not 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.retail.v2beta.Rule.TwowaySynonymsAction;

                        /**
                         * Decodes a TwowaySynonymsAction message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TwowaySynonymsAction
                         * @throws {Error} If the payload 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.retail.v2beta.Rule.TwowaySynonymsAction;

                        /**
                         * Verifies a TwowaySynonymsAction message.
                         * @param message Plain 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 TwowaySynonymsAction message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TwowaySynonymsAction
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.Rule.TwowaySynonymsAction;

                        /**
                         * Creates a plain object from a TwowaySynonymsAction message. Also converts values to other types if specified.
                         * @param message TwowaySynonymsAction
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.Rule.TwowaySynonymsAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TwowaySynonymsAction to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TwowaySynonymsAction
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an OnewaySynonymsAction. */
                    interface IOnewaySynonymsAction {

                        /** OnewaySynonymsAction queryTerms */
                        queryTerms?: (string[]|null);

                        /** OnewaySynonymsAction synonyms */
                        synonyms?: (string[]|null);

                        /** OnewaySynonymsAction onewayTerms */
                        onewayTerms?: (string[]|null);
                    }

                    /** Represents an OnewaySynonymsAction. */
                    class OnewaySynonymsAction implements IOnewaySynonymsAction {

                        /**
                         * Constructs a new OnewaySynonymsAction.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.Rule.IOnewaySynonymsAction);

                        /** OnewaySynonymsAction queryTerms. */
                        public queryTerms: string[];

                        /** OnewaySynonymsAction synonyms. */
                        public synonyms: string[];

                        /** OnewaySynonymsAction onewayTerms. */
                        public onewayTerms: string[];

                        /**
                         * Creates a new OnewaySynonymsAction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns OnewaySynonymsAction instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.Rule.IOnewaySynonymsAction): google.cloud.retail.v2beta.Rule.OnewaySynonymsAction;

                        /**
                         * Encodes the specified OnewaySynonymsAction message. Does not implicitly {@link google.cloud.retail.v2beta.Rule.OnewaySynonymsAction.verify|verify} messages.
                         * @param message OnewaySynonymsAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.Rule.IOnewaySynonymsAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified OnewaySynonymsAction message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.Rule.OnewaySynonymsAction.verify|verify} messages.
                         * @param message OnewaySynonymsAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.Rule.IOnewaySynonymsAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an OnewaySynonymsAction message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns OnewaySynonymsAction
                         * @throws {Error} If the payload is not 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.retail.v2beta.Rule.OnewaySynonymsAction;

                        /**
                         * Decodes an OnewaySynonymsAction message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns OnewaySynonymsAction
                         * @throws {Error} If the payload 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.retail.v2beta.Rule.OnewaySynonymsAction;

                        /**
                         * Verifies an OnewaySynonymsAction message.
                         * @param message Plain 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 OnewaySynonymsAction message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns OnewaySynonymsAction
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.Rule.OnewaySynonymsAction;

                        /**
                         * Creates a plain object from an OnewaySynonymsAction message. Also converts values to other types if specified.
                         * @param message OnewaySynonymsAction
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.Rule.OnewaySynonymsAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this OnewaySynonymsAction to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for OnewaySynonymsAction
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a DoNotAssociateAction. */
                    interface IDoNotAssociateAction {

                        /** DoNotAssociateAction queryTerms */
                        queryTerms?: (string[]|null);

                        /** DoNotAssociateAction doNotAssociateTerms */
                        doNotAssociateTerms?: (string[]|null);

                        /** DoNotAssociateAction terms */
                        terms?: (string[]|null);
                    }

                    /** Represents a DoNotAssociateAction. */
                    class DoNotAssociateAction implements IDoNotAssociateAction {

                        /**
                         * Constructs a new DoNotAssociateAction.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.Rule.IDoNotAssociateAction);

                        /** DoNotAssociateAction queryTerms. */
                        public queryTerms: string[];

                        /** DoNotAssociateAction doNotAssociateTerms. */
                        public doNotAssociateTerms: string[];

                        /** DoNotAssociateAction terms. */
                        public terms: string[];

                        /**
                         * Creates a new DoNotAssociateAction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DoNotAssociateAction instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.Rule.IDoNotAssociateAction): google.cloud.retail.v2beta.Rule.DoNotAssociateAction;

                        /**
                         * Encodes the specified DoNotAssociateAction message. Does not implicitly {@link google.cloud.retail.v2beta.Rule.DoNotAssociateAction.verify|verify} messages.
                         * @param message DoNotAssociateAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.Rule.IDoNotAssociateAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DoNotAssociateAction message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.Rule.DoNotAssociateAction.verify|verify} messages.
                         * @param message DoNotAssociateAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.Rule.IDoNotAssociateAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DoNotAssociateAction message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DoNotAssociateAction
                         * @throws {Error} If the payload is not 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.retail.v2beta.Rule.DoNotAssociateAction;

                        /**
                         * Decodes a DoNotAssociateAction message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DoNotAssociateAction
                         * @throws {Error} If the payload 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.retail.v2beta.Rule.DoNotAssociateAction;

                        /**
                         * Verifies a DoNotAssociateAction message.
                         * @param message Plain 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 DoNotAssociateAction message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DoNotAssociateAction
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.Rule.DoNotAssociateAction;

                        /**
                         * Creates a plain object from a DoNotAssociateAction message. Also converts values to other types if specified.
                         * @param message DoNotAssociateAction
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.Rule.DoNotAssociateAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DoNotAssociateAction to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DoNotAssociateAction
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ReplacementAction. */
                    interface IReplacementAction {

                        /** ReplacementAction queryTerms */
                        queryTerms?: (string[]|null);

                        /** ReplacementAction replacementTerm */
                        replacementTerm?: (string|null);

                        /** ReplacementAction term */
                        term?: (string|null);
                    }

                    /** Represents a ReplacementAction. */
                    class ReplacementAction implements IReplacementAction {

                        /**
                         * Constructs a new ReplacementAction.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.Rule.IReplacementAction);

                        /** ReplacementAction queryTerms. */
                        public queryTerms: string[];

                        /** ReplacementAction replacementTerm. */
                        public replacementTerm: string;

                        /** ReplacementAction term. */
                        public term: string;

                        /**
                         * Creates a new ReplacementAction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ReplacementAction instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.Rule.IReplacementAction): google.cloud.retail.v2beta.Rule.ReplacementAction;

                        /**
                         * Encodes the specified ReplacementAction message. Does not implicitly {@link google.cloud.retail.v2beta.Rule.ReplacementAction.verify|verify} messages.
                         * @param message ReplacementAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.Rule.IReplacementAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ReplacementAction message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.Rule.ReplacementAction.verify|verify} messages.
                         * @param message ReplacementAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.Rule.IReplacementAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ReplacementAction message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ReplacementAction
                         * @throws {Error} If the payload is not 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.retail.v2beta.Rule.ReplacementAction;

                        /**
                         * Decodes a ReplacementAction message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ReplacementAction
                         * @throws {Error} If the payload 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.retail.v2beta.Rule.ReplacementAction;

                        /**
                         * Verifies a ReplacementAction message.
                         * @param message Plain 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 ReplacementAction message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ReplacementAction
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.Rule.ReplacementAction;

                        /**
                         * Creates a plain object from a ReplacementAction message. Also converts values to other types if specified.
                         * @param message ReplacementAction
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.Rule.ReplacementAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ReplacementAction to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ReplacementAction
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an IgnoreAction. */
                    interface IIgnoreAction {

                        /** IgnoreAction ignoreTerms */
                        ignoreTerms?: (string[]|null);
                    }

                    /** Represents an IgnoreAction. */
                    class IgnoreAction implements IIgnoreAction {

                        /**
                         * Constructs a new IgnoreAction.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.Rule.IIgnoreAction);

                        /** IgnoreAction ignoreTerms. */
                        public ignoreTerms: string[];

                        /**
                         * Creates a new IgnoreAction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns IgnoreAction instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.Rule.IIgnoreAction): google.cloud.retail.v2beta.Rule.IgnoreAction;

                        /**
                         * Encodes the specified IgnoreAction message. Does not implicitly {@link google.cloud.retail.v2beta.Rule.IgnoreAction.verify|verify} messages.
                         * @param message IgnoreAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.Rule.IIgnoreAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified IgnoreAction message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.Rule.IgnoreAction.verify|verify} messages.
                         * @param message IgnoreAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.Rule.IIgnoreAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an IgnoreAction message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns IgnoreAction
                         * @throws {Error} If the payload is not 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.retail.v2beta.Rule.IgnoreAction;

                        /**
                         * Decodes an IgnoreAction message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns IgnoreAction
                         * @throws {Error} If the payload 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.retail.v2beta.Rule.IgnoreAction;

                        /**
                         * Verifies an IgnoreAction message.
                         * @param message Plain 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 IgnoreAction message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns IgnoreAction
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.Rule.IgnoreAction;

                        /**
                         * Creates a plain object from an IgnoreAction message. Also converts values to other types if specified.
                         * @param message IgnoreAction
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.Rule.IgnoreAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this IgnoreAction to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for IgnoreAction
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ForceReturnFacetAction. */
                    interface IForceReturnFacetAction {

                        /** ForceReturnFacetAction facetPositionAdjustments */
                        facetPositionAdjustments?: (google.cloud.retail.v2beta.Rule.ForceReturnFacetAction.IFacetPositionAdjustment[]|null);
                    }

                    /** Represents a ForceReturnFacetAction. */
                    class ForceReturnFacetAction implements IForceReturnFacetAction {

                        /**
                         * Constructs a new ForceReturnFacetAction.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.Rule.IForceReturnFacetAction);

                        /** ForceReturnFacetAction facetPositionAdjustments. */
                        public facetPositionAdjustments: google.cloud.retail.v2beta.Rule.ForceReturnFacetAction.IFacetPositionAdjustment[];

                        /**
                         * Creates a new ForceReturnFacetAction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ForceReturnFacetAction instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.Rule.IForceReturnFacetAction): google.cloud.retail.v2beta.Rule.ForceReturnFacetAction;

                        /**
                         * Encodes the specified ForceReturnFacetAction message. Does not implicitly {@link google.cloud.retail.v2beta.Rule.ForceReturnFacetAction.verify|verify} messages.
                         * @param message ForceReturnFacetAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.Rule.IForceReturnFacetAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ForceReturnFacetAction message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.Rule.ForceReturnFacetAction.verify|verify} messages.
                         * @param message ForceReturnFacetAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.Rule.IForceReturnFacetAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ForceReturnFacetAction message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ForceReturnFacetAction
                         * @throws {Error} If the payload is not 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.retail.v2beta.Rule.ForceReturnFacetAction;

                        /**
                         * Decodes a ForceReturnFacetAction message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ForceReturnFacetAction
                         * @throws {Error} If the payload 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.retail.v2beta.Rule.ForceReturnFacetAction;

                        /**
                         * Verifies a ForceReturnFacetAction message.
                         * @param message Plain 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 ForceReturnFacetAction message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ForceReturnFacetAction
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.Rule.ForceReturnFacetAction;

                        /**
                         * Creates a plain object from a ForceReturnFacetAction message. Also converts values to other types if specified.
                         * @param message ForceReturnFacetAction
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.Rule.ForceReturnFacetAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ForceReturnFacetAction to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ForceReturnFacetAction
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ForceReturnFacetAction {

                        /** Properties of a FacetPositionAdjustment. */
                        interface IFacetPositionAdjustment {

                            /** FacetPositionAdjustment attributeName */
                            attributeName?: (string|null);

                            /** FacetPositionAdjustment position */
                            position?: (number|null);
                        }

                        /** Represents a FacetPositionAdjustment. */
                        class FacetPositionAdjustment implements IFacetPositionAdjustment {

                            /**
                             * Constructs a new FacetPositionAdjustment.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2beta.Rule.ForceReturnFacetAction.IFacetPositionAdjustment);

                            /** FacetPositionAdjustment attributeName. */
                            public attributeName: string;

                            /** FacetPositionAdjustment position. */
                            public position: number;

                            /**
                             * Creates a new FacetPositionAdjustment instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns FacetPositionAdjustment instance
                             */
                            public static create(properties?: google.cloud.retail.v2beta.Rule.ForceReturnFacetAction.IFacetPositionAdjustment): google.cloud.retail.v2beta.Rule.ForceReturnFacetAction.FacetPositionAdjustment;

                            /**
                             * Encodes the specified FacetPositionAdjustment message. Does not implicitly {@link google.cloud.retail.v2beta.Rule.ForceReturnFacetAction.FacetPositionAdjustment.verify|verify} messages.
                             * @param message FacetPositionAdjustment message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.retail.v2beta.Rule.ForceReturnFacetAction.IFacetPositionAdjustment, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified FacetPositionAdjustment message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.Rule.ForceReturnFacetAction.FacetPositionAdjustment.verify|verify} messages.
                             * @param message FacetPositionAdjustment message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.retail.v2beta.Rule.ForceReturnFacetAction.IFacetPositionAdjustment, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a FacetPositionAdjustment message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns FacetPositionAdjustment
                             * @throws {Error} If the payload is not 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.retail.v2beta.Rule.ForceReturnFacetAction.FacetPositionAdjustment;

                            /**
                             * Decodes a FacetPositionAdjustment message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns FacetPositionAdjustment
                             * @throws {Error} If the payload 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.retail.v2beta.Rule.ForceReturnFacetAction.FacetPositionAdjustment;

                            /**
                             * Verifies a FacetPositionAdjustment message.
                             * @param message Plain 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 FacetPositionAdjustment message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns FacetPositionAdjustment
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.Rule.ForceReturnFacetAction.FacetPositionAdjustment;

                            /**
                             * Creates a plain object from a FacetPositionAdjustment message. Also converts values to other types if specified.
                             * @param message FacetPositionAdjustment
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.retail.v2beta.Rule.ForceReturnFacetAction.FacetPositionAdjustment, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this FacetPositionAdjustment to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for FacetPositionAdjustment
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a RemoveFacetAction. */
                    interface IRemoveFacetAction {

                        /** RemoveFacetAction attributeNames */
                        attributeNames?: (string[]|null);
                    }

                    /** Represents a RemoveFacetAction. */
                    class RemoveFacetAction implements IRemoveFacetAction {

                        /**
                         * Constructs a new RemoveFacetAction.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.Rule.IRemoveFacetAction);

                        /** RemoveFacetAction attributeNames. */
                        public attributeNames: string[];

                        /**
                         * Creates a new RemoveFacetAction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RemoveFacetAction instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.Rule.IRemoveFacetAction): google.cloud.retail.v2beta.Rule.RemoveFacetAction;

                        /**
                         * Encodes the specified RemoveFacetAction message. Does not implicitly {@link google.cloud.retail.v2beta.Rule.RemoveFacetAction.verify|verify} messages.
                         * @param message RemoveFacetAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.Rule.IRemoveFacetAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RemoveFacetAction message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.Rule.RemoveFacetAction.verify|verify} messages.
                         * @param message RemoveFacetAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.Rule.IRemoveFacetAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RemoveFacetAction message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RemoveFacetAction
                         * @throws {Error} If the payload is not 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.retail.v2beta.Rule.RemoveFacetAction;

                        /**
                         * Decodes a RemoveFacetAction message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RemoveFacetAction
                         * @throws {Error} If the payload 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.retail.v2beta.Rule.RemoveFacetAction;

                        /**
                         * Verifies a RemoveFacetAction message.
                         * @param message Plain 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 RemoveFacetAction message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RemoveFacetAction
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.Rule.RemoveFacetAction;

                        /**
                         * Creates a plain object from a RemoveFacetAction message. Also converts values to other types if specified.
                         * @param message RemoveFacetAction
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.Rule.RemoveFacetAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RemoveFacetAction to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RemoveFacetAction
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a PinAction. */
                    interface IPinAction {

                        /** PinAction pinMap */
                        pinMap?: ({ [k: string]: string }|null);
                    }

                    /** Represents a PinAction. */
                    class PinAction implements IPinAction {

                        /**
                         * Constructs a new PinAction.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.Rule.IPinAction);

                        /** PinAction pinMap. */
                        public pinMap: { [k: string]: string };

                        /**
                         * Creates a new PinAction instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PinAction instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.Rule.IPinAction): google.cloud.retail.v2beta.Rule.PinAction;

                        /**
                         * Encodes the specified PinAction message. Does not implicitly {@link google.cloud.retail.v2beta.Rule.PinAction.verify|verify} messages.
                         * @param message PinAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.Rule.IPinAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PinAction message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.Rule.PinAction.verify|verify} messages.
                         * @param message PinAction message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.Rule.IPinAction, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PinAction message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PinAction
                         * @throws {Error} If the payload is not 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.retail.v2beta.Rule.PinAction;

                        /**
                         * Decodes a PinAction message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PinAction
                         * @throws {Error} If the payload 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.retail.v2beta.Rule.PinAction;

                        /**
                         * Verifies a PinAction message.
                         * @param message Plain 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 PinAction message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PinAction
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.Rule.PinAction;

                        /**
                         * Creates a plain object from a PinAction message. Also converts values to other types if specified.
                         * @param message PinAction
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.Rule.PinAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PinAction to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PinAction
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of an Audience. */
                interface IAudience {

                    /** Audience genders */
                    genders?: (string[]|null);

                    /** Audience ageGroups */
                    ageGroups?: (string[]|null);
                }

                /** Represents an Audience. */
                class Audience implements IAudience {

                    /**
                     * Constructs a new Audience.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IAudience);

                    /** Audience genders. */
                    public genders: string[];

                    /** Audience ageGroups. */
                    public ageGroups: string[];

                    /**
                     * Creates a new Audience instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Audience instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IAudience): google.cloud.retail.v2beta.Audience;

                    /**
                     * Encodes the specified Audience message. Does not implicitly {@link google.cloud.retail.v2beta.Audience.verify|verify} messages.
                     * @param message Audience message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IAudience, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Audience message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.Audience.verify|verify} messages.
                     * @param message Audience message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IAudience, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an Audience message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Audience
                     * @throws {Error} If the payload is not 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.retail.v2beta.Audience;

                    /**
                     * Decodes an Audience message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Audience
                     * @throws {Error} If the payload 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.retail.v2beta.Audience;

                    /**
                     * Verifies an Audience message.
                     * @param message Plain 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 Audience message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Audience
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.Audience;

                    /**
                     * Creates a plain object from an Audience message. Also converts values to other types if specified.
                     * @param message Audience
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.Audience, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Audience to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Audience
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ColorInfo. */
                interface IColorInfo {

                    /** ColorInfo colorFamilies */
                    colorFamilies?: (string[]|null);

                    /** ColorInfo colors */
                    colors?: (string[]|null);
                }

                /** Represents a ColorInfo. */
                class ColorInfo implements IColorInfo {

                    /**
                     * Constructs a new ColorInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IColorInfo);

                    /** ColorInfo colorFamilies. */
                    public colorFamilies: string[];

                    /** ColorInfo colors. */
                    public colors: string[];

                    /**
                     * Creates a new ColorInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ColorInfo instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IColorInfo): google.cloud.retail.v2beta.ColorInfo;

                    /**
                     * Encodes the specified ColorInfo message. Does not implicitly {@link google.cloud.retail.v2beta.ColorInfo.verify|verify} messages.
                     * @param message ColorInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IColorInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ColorInfo message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ColorInfo.verify|verify} messages.
                     * @param message ColorInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IColorInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ColorInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ColorInfo
                     * @throws {Error} If the payload is not 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.retail.v2beta.ColorInfo;

                    /**
                     * Decodes a ColorInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ColorInfo
                     * @throws {Error} If the payload 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.retail.v2beta.ColorInfo;

                    /**
                     * Verifies a ColorInfo message.
                     * @param message Plain 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 ColorInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ColorInfo
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ColorInfo;

                    /**
                     * Creates a plain object from a ColorInfo message. Also converts values to other types if specified.
                     * @param message ColorInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ColorInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ColorInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ColorInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CustomAttribute. */
                interface ICustomAttribute {

                    /** CustomAttribute text */
                    text?: (string[]|null);

                    /** CustomAttribute numbers */
                    numbers?: (number[]|null);

                    /** CustomAttribute searchable */
                    searchable?: (boolean|null);

                    /** CustomAttribute indexable */
                    indexable?: (boolean|null);
                }

                /** Represents a CustomAttribute. */
                class CustomAttribute implements ICustomAttribute {

                    /**
                     * Constructs a new CustomAttribute.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.ICustomAttribute);

                    /** CustomAttribute text. */
                    public text: string[];

                    /** CustomAttribute numbers. */
                    public numbers: number[];

                    /** CustomAttribute searchable. */
                    public searchable?: (boolean|null);

                    /** CustomAttribute indexable. */
                    public indexable?: (boolean|null);

                    /**
                     * Creates a new CustomAttribute instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CustomAttribute instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.ICustomAttribute): google.cloud.retail.v2beta.CustomAttribute;

                    /**
                     * Encodes the specified CustomAttribute message. Does not implicitly {@link google.cloud.retail.v2beta.CustomAttribute.verify|verify} messages.
                     * @param message CustomAttribute message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.ICustomAttribute, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CustomAttribute message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.CustomAttribute.verify|verify} messages.
                     * @param message CustomAttribute message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.ICustomAttribute, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CustomAttribute message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CustomAttribute
                     * @throws {Error} If the payload is not 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.retail.v2beta.CustomAttribute;

                    /**
                     * Decodes a CustomAttribute message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CustomAttribute
                     * @throws {Error} If the payload 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.retail.v2beta.CustomAttribute;

                    /**
                     * Verifies a CustomAttribute message.
                     * @param message Plain 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 CustomAttribute message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CustomAttribute
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.CustomAttribute;

                    /**
                     * Creates a plain object from a CustomAttribute message. Also converts values to other types if specified.
                     * @param message CustomAttribute
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.CustomAttribute, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CustomAttribute to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CustomAttribute
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a FulfillmentInfo. */
                interface IFulfillmentInfo {

                    /** FulfillmentInfo type */
                    type?: (string|null);

                    /** FulfillmentInfo placeIds */
                    placeIds?: (string[]|null);
                }

                /** Represents a FulfillmentInfo. */
                class FulfillmentInfo implements IFulfillmentInfo {

                    /**
                     * Constructs a new FulfillmentInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IFulfillmentInfo);

                    /** FulfillmentInfo type. */
                    public type: string;

                    /** FulfillmentInfo placeIds. */
                    public placeIds: string[];

                    /**
                     * Creates a new FulfillmentInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns FulfillmentInfo instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IFulfillmentInfo): google.cloud.retail.v2beta.FulfillmentInfo;

                    /**
                     * Encodes the specified FulfillmentInfo message. Does not implicitly {@link google.cloud.retail.v2beta.FulfillmentInfo.verify|verify} messages.
                     * @param message FulfillmentInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IFulfillmentInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified FulfillmentInfo message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.FulfillmentInfo.verify|verify} messages.
                     * @param message FulfillmentInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IFulfillmentInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a FulfillmentInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns FulfillmentInfo
                     * @throws {Error} If the payload is not 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.retail.v2beta.FulfillmentInfo;

                    /**
                     * Decodes a FulfillmentInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns FulfillmentInfo
                     * @throws {Error} If the payload 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.retail.v2beta.FulfillmentInfo;

                    /**
                     * Verifies a FulfillmentInfo message.
                     * @param message Plain 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 FulfillmentInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns FulfillmentInfo
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.FulfillmentInfo;

                    /**
                     * Creates a plain object from a FulfillmentInfo message. Also converts values to other types if specified.
                     * @param message FulfillmentInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.FulfillmentInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this FulfillmentInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for FulfillmentInfo
                     * @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 uri */
                    uri?: (string|null);

                    /** Image height */
                    height?: (number|null);

                    /** Image width */
                    width?: (number|null);
                }

                /** Represents an Image. */
                class Image implements IImage {

                    /**
                     * Constructs a new Image.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IImage);

                    /** Image uri. */
                    public uri: string;

                    /** Image height. */
                    public height: number;

                    /** Image width. */
                    public width: number;

                    /**
                     * Creates a new Image instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Image instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IImage): google.cloud.retail.v2beta.Image;

                    /**
                     * Encodes the specified Image message. Does not implicitly {@link google.cloud.retail.v2beta.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.retail.v2beta.IImage, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Image message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.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.retail.v2beta.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.retail.v2beta.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.retail.v2beta.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.retail.v2beta.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.retail.v2beta.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 an Interval. */
                interface IInterval {

                    /** Interval minimum */
                    minimum?: (number|null);

                    /** Interval exclusiveMinimum */
                    exclusiveMinimum?: (number|null);

                    /** Interval maximum */
                    maximum?: (number|null);

                    /** Interval exclusiveMaximum */
                    exclusiveMaximum?: (number|null);
                }

                /** Represents an Interval. */
                class Interval implements IInterval {

                    /**
                     * Constructs a new Interval.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IInterval);

                    /** Interval minimum. */
                    public minimum?: (number|null);

                    /** Interval exclusiveMinimum. */
                    public exclusiveMinimum?: (number|null);

                    /** Interval maximum. */
                    public maximum?: (number|null);

                    /** Interval exclusiveMaximum. */
                    public exclusiveMaximum?: (number|null);

                    /** Interval min. */
                    public min?: ("minimum"|"exclusiveMinimum");

                    /** Interval max. */
                    public max?: ("maximum"|"exclusiveMaximum");

                    /**
                     * Creates a new Interval instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Interval instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IInterval): google.cloud.retail.v2beta.Interval;

                    /**
                     * Encodes the specified Interval message. Does not implicitly {@link google.cloud.retail.v2beta.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.cloud.retail.v2beta.IInterval, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Interval message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.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.cloud.retail.v2beta.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.cloud.retail.v2beta.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.cloud.retail.v2beta.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.cloud.retail.v2beta.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.cloud.retail.v2beta.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 a PriceInfo. */
                interface IPriceInfo {

                    /** PriceInfo currencyCode */
                    currencyCode?: (string|null);

                    /** PriceInfo price */
                    price?: (number|null);

                    /** PriceInfo originalPrice */
                    originalPrice?: (number|null);

                    /** PriceInfo cost */
                    cost?: (number|null);

                    /** PriceInfo priceEffectiveTime */
                    priceEffectiveTime?: (google.protobuf.ITimestamp|null);

                    /** PriceInfo priceExpireTime */
                    priceExpireTime?: (google.protobuf.ITimestamp|null);

                    /** PriceInfo priceRange */
                    priceRange?: (google.cloud.retail.v2beta.PriceInfo.IPriceRange|null);
                }

                /** Represents a PriceInfo. */
                class PriceInfo implements IPriceInfo {

                    /**
                     * Constructs a new PriceInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IPriceInfo);

                    /** PriceInfo currencyCode. */
                    public currencyCode: string;

                    /** PriceInfo price. */
                    public price: number;

                    /** PriceInfo originalPrice. */
                    public originalPrice: number;

                    /** PriceInfo cost. */
                    public cost: number;

                    /** PriceInfo priceEffectiveTime. */
                    public priceEffectiveTime?: (google.protobuf.ITimestamp|null);

                    /** PriceInfo priceExpireTime. */
                    public priceExpireTime?: (google.protobuf.ITimestamp|null);

                    /** PriceInfo priceRange. */
                    public priceRange?: (google.cloud.retail.v2beta.PriceInfo.IPriceRange|null);

                    /**
                     * Creates a new PriceInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PriceInfo instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IPriceInfo): google.cloud.retail.v2beta.PriceInfo;

                    /**
                     * Encodes the specified PriceInfo message. Does not implicitly {@link google.cloud.retail.v2beta.PriceInfo.verify|verify} messages.
                     * @param message PriceInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IPriceInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PriceInfo message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.PriceInfo.verify|verify} messages.
                     * @param message PriceInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IPriceInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PriceInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PriceInfo
                     * @throws {Error} If the payload is not 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.retail.v2beta.PriceInfo;

                    /**
                     * Decodes a PriceInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PriceInfo
                     * @throws {Error} If the payload 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.retail.v2beta.PriceInfo;

                    /**
                     * Verifies a PriceInfo message.
                     * @param message Plain 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 PriceInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PriceInfo
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.PriceInfo;

                    /**
                     * Creates a plain object from a PriceInfo message. Also converts values to other types if specified.
                     * @param message PriceInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.PriceInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PriceInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PriceInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace PriceInfo {

                    /** Properties of a PriceRange. */
                    interface IPriceRange {

                        /** PriceRange price */
                        price?: (google.cloud.retail.v2beta.IInterval|null);

                        /** PriceRange originalPrice */
                        originalPrice?: (google.cloud.retail.v2beta.IInterval|null);
                    }

                    /** Represents a PriceRange. */
                    class PriceRange implements IPriceRange {

                        /**
                         * Constructs a new PriceRange.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.PriceInfo.IPriceRange);

                        /** PriceRange price. */
                        public price?: (google.cloud.retail.v2beta.IInterval|null);

                        /** PriceRange originalPrice. */
                        public originalPrice?: (google.cloud.retail.v2beta.IInterval|null);

                        /**
                         * Creates a new PriceRange instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PriceRange instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.PriceInfo.IPriceRange): google.cloud.retail.v2beta.PriceInfo.PriceRange;

                        /**
                         * Encodes the specified PriceRange message. Does not implicitly {@link google.cloud.retail.v2beta.PriceInfo.PriceRange.verify|verify} messages.
                         * @param message PriceRange message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.PriceInfo.IPriceRange, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PriceRange message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.PriceInfo.PriceRange.verify|verify} messages.
                         * @param message PriceRange message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.PriceInfo.IPriceRange, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PriceRange message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PriceRange
                         * @throws {Error} If the payload is not 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.retail.v2beta.PriceInfo.PriceRange;

                        /**
                         * Decodes a PriceRange message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PriceRange
                         * @throws {Error} If the payload 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.retail.v2beta.PriceInfo.PriceRange;

                        /**
                         * Verifies a PriceRange message.
                         * @param message Plain 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 PriceRange message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PriceRange
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.PriceInfo.PriceRange;

                        /**
                         * Creates a plain object from a PriceRange message. Also converts values to other types if specified.
                         * @param message PriceRange
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.PriceInfo.PriceRange, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PriceRange to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PriceRange
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of a Rating. */
                interface IRating {

                    /** Rating ratingCount */
                    ratingCount?: (number|null);

                    /** Rating averageRating */
                    averageRating?: (number|null);

                    /** Rating ratingHistogram */
                    ratingHistogram?: (number[]|null);
                }

                /** Represents a Rating. */
                class Rating implements IRating {

                    /**
                     * Constructs a new Rating.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IRating);

                    /** Rating ratingCount. */
                    public ratingCount: number;

                    /** Rating averageRating. */
                    public averageRating: number;

                    /** Rating ratingHistogram. */
                    public ratingHistogram: number[];

                    /**
                     * Creates a new Rating instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Rating instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IRating): google.cloud.retail.v2beta.Rating;

                    /**
                     * Encodes the specified Rating message. Does not implicitly {@link google.cloud.retail.v2beta.Rating.verify|verify} messages.
                     * @param message Rating message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IRating, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Rating message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.Rating.verify|verify} messages.
                     * @param message Rating message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IRating, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Rating message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Rating
                     * @throws {Error} If the payload is not 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.retail.v2beta.Rating;

                    /**
                     * Decodes a Rating message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Rating
                     * @throws {Error} If the payload 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.retail.v2beta.Rating;

                    /**
                     * Verifies a Rating message.
                     * @param message Plain 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 Rating message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Rating
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.Rating;

                    /**
                     * Creates a plain object from a Rating message. Also converts values to other types if specified.
                     * @param message Rating
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.Rating, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Rating to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Rating
                     * @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 userId */
                    userId?: (string|null);

                    /** UserInfo ipAddress */
                    ipAddress?: (string|null);

                    /** UserInfo userAgent */
                    userAgent?: (string|null);

                    /** UserInfo directUserRequest */
                    directUserRequest?: (boolean|null);
                }

                /** Represents a UserInfo. */
                class UserInfo implements IUserInfo {

                    /**
                     * Constructs a new UserInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IUserInfo);

                    /** UserInfo userId. */
                    public userId: string;

                    /** UserInfo ipAddress. */
                    public ipAddress: string;

                    /** UserInfo userAgent. */
                    public userAgent: string;

                    /** UserInfo directUserRequest. */
                    public directUserRequest: boolean;

                    /**
                     * Creates a new UserInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UserInfo instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IUserInfo): google.cloud.retail.v2beta.UserInfo;

                    /**
                     * Encodes the specified UserInfo message. Does not implicitly {@link google.cloud.retail.v2beta.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.retail.v2beta.IUserInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UserInfo message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.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.retail.v2beta.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.retail.v2beta.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.retail.v2beta.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.retail.v2beta.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.retail.v2beta.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 a LocalInventory. */
                interface ILocalInventory {

                    /** LocalInventory placeId */
                    placeId?: (string|null);

                    /** LocalInventory priceInfo */
                    priceInfo?: (google.cloud.retail.v2beta.IPriceInfo|null);

                    /** LocalInventory attributes */
                    attributes?: ({ [k: string]: google.cloud.retail.v2beta.ICustomAttribute }|null);

                    /** LocalInventory fulfillmentTypes */
                    fulfillmentTypes?: (string[]|null);
                }

                /** Represents a LocalInventory. */
                class LocalInventory implements ILocalInventory {

                    /**
                     * Constructs a new LocalInventory.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.ILocalInventory);

                    /** LocalInventory placeId. */
                    public placeId: string;

                    /** LocalInventory priceInfo. */
                    public priceInfo?: (google.cloud.retail.v2beta.IPriceInfo|null);

                    /** LocalInventory attributes. */
                    public attributes: { [k: string]: google.cloud.retail.v2beta.ICustomAttribute };

                    /** LocalInventory fulfillmentTypes. */
                    public fulfillmentTypes: string[];

                    /**
                     * Creates a new LocalInventory instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns LocalInventory instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.ILocalInventory): google.cloud.retail.v2beta.LocalInventory;

                    /**
                     * Encodes the specified LocalInventory message. Does not implicitly {@link google.cloud.retail.v2beta.LocalInventory.verify|verify} messages.
                     * @param message LocalInventory message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.ILocalInventory, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified LocalInventory message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.LocalInventory.verify|verify} messages.
                     * @param message LocalInventory message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.ILocalInventory, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a LocalInventory message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns LocalInventory
                     * @throws {Error} If the payload is not 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.retail.v2beta.LocalInventory;

                    /**
                     * Decodes a LocalInventory message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns LocalInventory
                     * @throws {Error} If the payload 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.retail.v2beta.LocalInventory;

                    /**
                     * Verifies a LocalInventory message.
                     * @param message Plain 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 LocalInventory message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns LocalInventory
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.LocalInventory;

                    /**
                     * Creates a plain object from a LocalInventory message. Also converts values to other types if specified.
                     * @param message LocalInventory
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.LocalInventory, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this LocalInventory to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for LocalInventory
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PinControlMetadata. */
                interface IPinControlMetadata {

                    /** PinControlMetadata allMatchedPins */
                    allMatchedPins?: ({ [k: string]: google.cloud.retail.v2beta.PinControlMetadata.IProductPins }|null);

                    /** PinControlMetadata droppedPins */
                    droppedPins?: ({ [k: string]: google.cloud.retail.v2beta.PinControlMetadata.IProductPins }|null);
                }

                /** Represents a PinControlMetadata. */
                class PinControlMetadata implements IPinControlMetadata {

                    /**
                     * Constructs a new PinControlMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IPinControlMetadata);

                    /** PinControlMetadata allMatchedPins. */
                    public allMatchedPins: { [k: string]: google.cloud.retail.v2beta.PinControlMetadata.IProductPins };

                    /** PinControlMetadata droppedPins. */
                    public droppedPins: { [k: string]: google.cloud.retail.v2beta.PinControlMetadata.IProductPins };

                    /**
                     * Creates a new PinControlMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PinControlMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IPinControlMetadata): google.cloud.retail.v2beta.PinControlMetadata;

                    /**
                     * Encodes the specified PinControlMetadata message. Does not implicitly {@link google.cloud.retail.v2beta.PinControlMetadata.verify|verify} messages.
                     * @param message PinControlMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IPinControlMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PinControlMetadata message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.PinControlMetadata.verify|verify} messages.
                     * @param message PinControlMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IPinControlMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PinControlMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PinControlMetadata
                     * @throws {Error} If the payload is not 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.retail.v2beta.PinControlMetadata;

                    /**
                     * Decodes a PinControlMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PinControlMetadata
                     * @throws {Error} If the payload 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.retail.v2beta.PinControlMetadata;

                    /**
                     * Verifies a PinControlMetadata message.
                     * @param message Plain 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 PinControlMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PinControlMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.PinControlMetadata;

                    /**
                     * Creates a plain object from a PinControlMetadata message. Also converts values to other types if specified.
                     * @param message PinControlMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.PinControlMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PinControlMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PinControlMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace PinControlMetadata {

                    /** Properties of a ProductPins. */
                    interface IProductPins {

                        /** ProductPins productId */
                        productId?: (string[]|null);
                    }

                    /** Represents a ProductPins. */
                    class ProductPins implements IProductPins {

                        /**
                         * Constructs a new ProductPins.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.PinControlMetadata.IProductPins);

                        /** ProductPins productId. */
                        public productId: string[];

                        /**
                         * Creates a new ProductPins instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ProductPins instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.PinControlMetadata.IProductPins): google.cloud.retail.v2beta.PinControlMetadata.ProductPins;

                        /**
                         * Encodes the specified ProductPins message. Does not implicitly {@link google.cloud.retail.v2beta.PinControlMetadata.ProductPins.verify|verify} messages.
                         * @param message ProductPins message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.PinControlMetadata.IProductPins, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ProductPins message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.PinControlMetadata.ProductPins.verify|verify} messages.
                         * @param message ProductPins message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.PinControlMetadata.IProductPins, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ProductPins message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ProductPins
                         * @throws {Error} If the payload is not 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.retail.v2beta.PinControlMetadata.ProductPins;

                        /**
                         * Decodes a ProductPins message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ProductPins
                         * @throws {Error} If the payload 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.retail.v2beta.PinControlMetadata.ProductPins;

                        /**
                         * Verifies a ProductPins message.
                         * @param message Plain 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 ProductPins message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ProductPins
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.PinControlMetadata.ProductPins;

                        /**
                         * Creates a plain object from a ProductPins message. Also converts values to other types if specified.
                         * @param message ProductPins
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.PinControlMetadata.ProductPins, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ProductPins to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ProductPins
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of a StringList. */
                interface IStringList {

                    /** StringList values */
                    values?: (string[]|null);
                }

                /** Represents a StringList. */
                class StringList implements IStringList {

                    /**
                     * Constructs a new StringList.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IStringList);

                    /** StringList values. */
                    public values: string[];

                    /**
                     * Creates a new StringList instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns StringList instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IStringList): google.cloud.retail.v2beta.StringList;

                    /**
                     * Encodes the specified StringList message. Does not implicitly {@link google.cloud.retail.v2beta.StringList.verify|verify} messages.
                     * @param message StringList message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IStringList, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified StringList message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.StringList.verify|verify} messages.
                     * @param message StringList message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IStringList, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a StringList message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns StringList
                     * @throws {Error} If the payload is not 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.retail.v2beta.StringList;

                    /**
                     * Decodes a StringList message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns StringList
                     * @throws {Error} If the payload 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.retail.v2beta.StringList;

                    /**
                     * Verifies a StringList message.
                     * @param message Plain 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 StringList message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns StringList
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.StringList;

                    /**
                     * Creates a plain object from a StringList message. Also converts values to other types if specified.
                     * @param message StringList
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.StringList, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this StringList to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for StringList
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DoubleList. */
                interface IDoubleList {

                    /** DoubleList values */
                    values?: (number[]|null);
                }

                /** Represents a DoubleList. */
                class DoubleList implements IDoubleList {

                    /**
                     * Constructs a new DoubleList.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IDoubleList);

                    /** DoubleList values. */
                    public values: number[];

                    /**
                     * Creates a new DoubleList instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DoubleList instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IDoubleList): google.cloud.retail.v2beta.DoubleList;

                    /**
                     * Encodes the specified DoubleList message. Does not implicitly {@link google.cloud.retail.v2beta.DoubleList.verify|verify} messages.
                     * @param message DoubleList message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IDoubleList, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DoubleList message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.DoubleList.verify|verify} messages.
                     * @param message DoubleList message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IDoubleList, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DoubleList message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DoubleList
                     * @throws {Error} If the payload is not 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.retail.v2beta.DoubleList;

                    /**
                     * Decodes a DoubleList message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DoubleList
                     * @throws {Error} If the payload 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.retail.v2beta.DoubleList;

                    /**
                     * Verifies a DoubleList message.
                     * @param message Plain 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 DoubleList message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DoubleList
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.DoubleList;

                    /**
                     * Creates a plain object from a DoubleList message. Also converts values to other types if specified.
                     * @param message DoubleList
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.DoubleList, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DoubleList to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DoubleList
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GcsSource. */
                interface IGcsSource {

                    /** GcsSource inputUris */
                    inputUris?: (string[]|null);

                    /** GcsSource dataSchema */
                    dataSchema?: (string|null);
                }

                /** Represents a GcsSource. */
                class GcsSource implements IGcsSource {

                    /**
                     * Constructs a new GcsSource.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IGcsSource);

                    /** GcsSource inputUris. */
                    public inputUris: string[];

                    /** GcsSource dataSchema. */
                    public dataSchema: string;

                    /**
                     * Creates a new GcsSource instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GcsSource instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IGcsSource): google.cloud.retail.v2beta.GcsSource;

                    /**
                     * Encodes the specified GcsSource message. Does not implicitly {@link google.cloud.retail.v2beta.GcsSource.verify|verify} messages.
                     * @param message GcsSource message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IGcsSource, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GcsSource message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.GcsSource.verify|verify} messages.
                     * @param message GcsSource message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IGcsSource, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GcsSource message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GcsSource
                     * @throws {Error} If the payload is not 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.retail.v2beta.GcsSource;

                    /**
                     * Decodes a GcsSource message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GcsSource
                     * @throws {Error} If the payload 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.retail.v2beta.GcsSource;

                    /**
                     * Verifies a GcsSource message.
                     * @param message Plain 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 GcsSource message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GcsSource
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.GcsSource;

                    /**
                     * Creates a plain object from a GcsSource message. Also converts values to other types if specified.
                     * @param message GcsSource
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.GcsSource, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GcsSource to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GcsSource
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a BigQuerySource. */
                interface IBigQuerySource {

                    /** BigQuerySource partitionDate */
                    partitionDate?: (google.type.IDate|null);

                    /** BigQuerySource projectId */
                    projectId?: (string|null);

                    /** BigQuerySource datasetId */
                    datasetId?: (string|null);

                    /** BigQuerySource tableId */
                    tableId?: (string|null);

                    /** BigQuerySource gcsStagingDir */
                    gcsStagingDir?: (string|null);

                    /** BigQuerySource dataSchema */
                    dataSchema?: (string|null);
                }

                /** Represents a BigQuerySource. */
                class BigQuerySource implements IBigQuerySource {

                    /**
                     * Constructs a new BigQuerySource.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IBigQuerySource);

                    /** BigQuerySource partitionDate. */
                    public partitionDate?: (google.type.IDate|null);

                    /** BigQuerySource projectId. */
                    public projectId: string;

                    /** BigQuerySource datasetId. */
                    public datasetId: string;

                    /** BigQuerySource tableId. */
                    public tableId: string;

                    /** BigQuerySource gcsStagingDir. */
                    public gcsStagingDir: string;

                    /** BigQuerySource dataSchema. */
                    public dataSchema: string;

                    /** BigQuerySource partition. */
                    public partition?: "partitionDate";

                    /**
                     * Creates a new BigQuerySource instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns BigQuerySource instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IBigQuerySource): google.cloud.retail.v2beta.BigQuerySource;

                    /**
                     * Encodes the specified BigQuerySource message. Does not implicitly {@link google.cloud.retail.v2beta.BigQuerySource.verify|verify} messages.
                     * @param message BigQuerySource message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IBigQuerySource, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified BigQuerySource message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.BigQuerySource.verify|verify} messages.
                     * @param message BigQuerySource message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IBigQuerySource, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a BigQuerySource message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns BigQuerySource
                     * @throws {Error} If the payload is not 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.retail.v2beta.BigQuerySource;

                    /**
                     * Decodes a BigQuerySource message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns BigQuerySource
                     * @throws {Error} If the payload 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.retail.v2beta.BigQuerySource;

                    /**
                     * Verifies a BigQuerySource message.
                     * @param message Plain 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 BigQuerySource message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns BigQuerySource
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.BigQuerySource;

                    /**
                     * Creates a plain object from a BigQuerySource message. Also converts values to other types if specified.
                     * @param message BigQuerySource
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.BigQuerySource, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this BigQuerySource to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for BigQuerySource
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ProductInlineSource. */
                interface IProductInlineSource {

                    /** ProductInlineSource products */
                    products?: (google.cloud.retail.v2beta.IProduct[]|null);
                }

                /** Represents a ProductInlineSource. */
                class ProductInlineSource implements IProductInlineSource {

                    /**
                     * Constructs a new ProductInlineSource.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IProductInlineSource);

                    /** ProductInlineSource products. */
                    public products: google.cloud.retail.v2beta.IProduct[];

                    /**
                     * Creates a new ProductInlineSource instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ProductInlineSource instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IProductInlineSource): google.cloud.retail.v2beta.ProductInlineSource;

                    /**
                     * Encodes the specified ProductInlineSource message. Does not implicitly {@link google.cloud.retail.v2beta.ProductInlineSource.verify|verify} messages.
                     * @param message ProductInlineSource message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IProductInlineSource, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ProductInlineSource message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ProductInlineSource.verify|verify} messages.
                     * @param message ProductInlineSource message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IProductInlineSource, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ProductInlineSource message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ProductInlineSource
                     * @throws {Error} If the payload is not 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.retail.v2beta.ProductInlineSource;

                    /**
                     * Decodes a ProductInlineSource message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ProductInlineSource
                     * @throws {Error} If the payload 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.retail.v2beta.ProductInlineSource;

                    /**
                     * Verifies a ProductInlineSource message.
                     * @param message Plain 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 ProductInlineSource message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ProductInlineSource
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ProductInlineSource;

                    /**
                     * Creates a plain object from a ProductInlineSource message. Also converts values to other types if specified.
                     * @param message ProductInlineSource
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ProductInlineSource, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ProductInlineSource to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ProductInlineSource
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a UserEventInlineSource. */
                interface IUserEventInlineSource {

                    /** UserEventInlineSource userEvents */
                    userEvents?: (google.cloud.retail.v2beta.IUserEvent[]|null);
                }

                /** Represents a UserEventInlineSource. */
                class UserEventInlineSource implements IUserEventInlineSource {

                    /**
                     * Constructs a new UserEventInlineSource.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IUserEventInlineSource);

                    /** UserEventInlineSource userEvents. */
                    public userEvents: google.cloud.retail.v2beta.IUserEvent[];

                    /**
                     * Creates a new UserEventInlineSource instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UserEventInlineSource instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IUserEventInlineSource): google.cloud.retail.v2beta.UserEventInlineSource;

                    /**
                     * Encodes the specified UserEventInlineSource message. Does not implicitly {@link google.cloud.retail.v2beta.UserEventInlineSource.verify|verify} messages.
                     * @param message UserEventInlineSource message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IUserEventInlineSource, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UserEventInlineSource message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.UserEventInlineSource.verify|verify} messages.
                     * @param message UserEventInlineSource message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IUserEventInlineSource, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a UserEventInlineSource message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UserEventInlineSource
                     * @throws {Error} If the payload is not 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.retail.v2beta.UserEventInlineSource;

                    /**
                     * Decodes a UserEventInlineSource message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UserEventInlineSource
                     * @throws {Error} If the payload 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.retail.v2beta.UserEventInlineSource;

                    /**
                     * Verifies a UserEventInlineSource message.
                     * @param message Plain 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 UserEventInlineSource message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UserEventInlineSource
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.UserEventInlineSource;

                    /**
                     * Creates a plain object from a UserEventInlineSource message. Also converts values to other types if specified.
                     * @param message UserEventInlineSource
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.UserEventInlineSource, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UserEventInlineSource to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UserEventInlineSource
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ImportErrorsConfig. */
                interface IImportErrorsConfig {

                    /** ImportErrorsConfig gcsPrefix */
                    gcsPrefix?: (string|null);
                }

                /** Represents an ImportErrorsConfig. */
                class ImportErrorsConfig implements IImportErrorsConfig {

                    /**
                     * Constructs a new ImportErrorsConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IImportErrorsConfig);

                    /** ImportErrorsConfig gcsPrefix. */
                    public gcsPrefix?: (string|null);

                    /** ImportErrorsConfig destination. */
                    public destination?: "gcsPrefix";

                    /**
                     * Creates a new ImportErrorsConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ImportErrorsConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IImportErrorsConfig): google.cloud.retail.v2beta.ImportErrorsConfig;

                    /**
                     * Encodes the specified ImportErrorsConfig message. Does not implicitly {@link google.cloud.retail.v2beta.ImportErrorsConfig.verify|verify} messages.
                     * @param message ImportErrorsConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IImportErrorsConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ImportErrorsConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ImportErrorsConfig.verify|verify} messages.
                     * @param message ImportErrorsConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IImportErrorsConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ImportErrorsConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ImportErrorsConfig
                     * @throws {Error} If the payload is not 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.retail.v2beta.ImportErrorsConfig;

                    /**
                     * Decodes an ImportErrorsConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ImportErrorsConfig
                     * @throws {Error} If the payload 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.retail.v2beta.ImportErrorsConfig;

                    /**
                     * Verifies an ImportErrorsConfig message.
                     * @param message Plain 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 ImportErrorsConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ImportErrorsConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ImportErrorsConfig;

                    /**
                     * Creates a plain object from an ImportErrorsConfig message. Also converts values to other types if specified.
                     * @param message ImportErrorsConfig
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ImportErrorsConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ImportErrorsConfig to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ImportErrorsConfig
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ImportProductsRequest. */
                interface IImportProductsRequest {

                    /** ImportProductsRequest parent */
                    parent?: (string|null);

                    /** ImportProductsRequest requestId */
                    requestId?: (string|null);

                    /** ImportProductsRequest inputConfig */
                    inputConfig?: (google.cloud.retail.v2beta.IProductInputConfig|null);

                    /** ImportProductsRequest errorsConfig */
                    errorsConfig?: (google.cloud.retail.v2beta.IImportErrorsConfig|null);

                    /** ImportProductsRequest updateMask */
                    updateMask?: (google.protobuf.IFieldMask|null);

                    /** ImportProductsRequest reconciliationMode */
                    reconciliationMode?: (google.cloud.retail.v2beta.ImportProductsRequest.ReconciliationMode|keyof typeof google.cloud.retail.v2beta.ImportProductsRequest.ReconciliationMode|null);

                    /** ImportProductsRequest notificationPubsubTopic */
                    notificationPubsubTopic?: (string|null);
                }

                /** Represents an ImportProductsRequest. */
                class ImportProductsRequest implements IImportProductsRequest {

                    /**
                     * Constructs a new ImportProductsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IImportProductsRequest);

                    /** ImportProductsRequest parent. */
                    public parent: string;

                    /** ImportProductsRequest requestId. */
                    public requestId: string;

                    /** ImportProductsRequest inputConfig. */
                    public inputConfig?: (google.cloud.retail.v2beta.IProductInputConfig|null);

                    /** ImportProductsRequest errorsConfig. */
                    public errorsConfig?: (google.cloud.retail.v2beta.IImportErrorsConfig|null);

                    /** ImportProductsRequest updateMask. */
                    public updateMask?: (google.protobuf.IFieldMask|null);

                    /** ImportProductsRequest reconciliationMode. */
                    public reconciliationMode: (google.cloud.retail.v2beta.ImportProductsRequest.ReconciliationMode|keyof typeof google.cloud.retail.v2beta.ImportProductsRequest.ReconciliationMode);

                    /** ImportProductsRequest notificationPubsubTopic. */
                    public notificationPubsubTopic: string;

                    /**
                     * Creates a new ImportProductsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ImportProductsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IImportProductsRequest): google.cloud.retail.v2beta.ImportProductsRequest;

                    /**
                     * Encodes the specified ImportProductsRequest message. Does not implicitly {@link google.cloud.retail.v2beta.ImportProductsRequest.verify|verify} messages.
                     * @param message ImportProductsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IImportProductsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ImportProductsRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ImportProductsRequest.verify|verify} messages.
                     * @param message ImportProductsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IImportProductsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ImportProductsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ImportProductsRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.ImportProductsRequest;

                    /**
                     * Decodes an ImportProductsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ImportProductsRequest
                     * @throws {Error} If the payload 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.retail.v2beta.ImportProductsRequest;

                    /**
                     * Verifies an ImportProductsRequest message.
                     * @param message Plain 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 ImportProductsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ImportProductsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ImportProductsRequest;

                    /**
                     * Creates a plain object from an ImportProductsRequest message. Also converts values to other types if specified.
                     * @param message ImportProductsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ImportProductsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ImportProductsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ImportProductsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace ImportProductsRequest {

                    /** ReconciliationMode enum. */
                    enum ReconciliationMode {
                        RECONCILIATION_MODE_UNSPECIFIED = 0,
                        INCREMENTAL = 1,
                        FULL = 2
                    }
                }

                /** Properties of an ImportUserEventsRequest. */
                interface IImportUserEventsRequest {

                    /** ImportUserEventsRequest parent */
                    parent?: (string|null);

                    /** ImportUserEventsRequest inputConfig */
                    inputConfig?: (google.cloud.retail.v2beta.IUserEventInputConfig|null);

                    /** ImportUserEventsRequest errorsConfig */
                    errorsConfig?: (google.cloud.retail.v2beta.IImportErrorsConfig|null);
                }

                /** Represents an ImportUserEventsRequest. */
                class ImportUserEventsRequest implements IImportUserEventsRequest {

                    /**
                     * Constructs a new ImportUserEventsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IImportUserEventsRequest);

                    /** ImportUserEventsRequest parent. */
                    public parent: string;

                    /** ImportUserEventsRequest inputConfig. */
                    public inputConfig?: (google.cloud.retail.v2beta.IUserEventInputConfig|null);

                    /** ImportUserEventsRequest errorsConfig. */
                    public errorsConfig?: (google.cloud.retail.v2beta.IImportErrorsConfig|null);

                    /**
                     * Creates a new ImportUserEventsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ImportUserEventsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IImportUserEventsRequest): google.cloud.retail.v2beta.ImportUserEventsRequest;

                    /**
                     * Encodes the specified ImportUserEventsRequest message. Does not implicitly {@link google.cloud.retail.v2beta.ImportUserEventsRequest.verify|verify} messages.
                     * @param message ImportUserEventsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IImportUserEventsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ImportUserEventsRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ImportUserEventsRequest.verify|verify} messages.
                     * @param message ImportUserEventsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IImportUserEventsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ImportUserEventsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ImportUserEventsRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.ImportUserEventsRequest;

                    /**
                     * Decodes an ImportUserEventsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ImportUserEventsRequest
                     * @throws {Error} If the payload 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.retail.v2beta.ImportUserEventsRequest;

                    /**
                     * Verifies an ImportUserEventsRequest message.
                     * @param message Plain 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 ImportUserEventsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ImportUserEventsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ImportUserEventsRequest;

                    /**
                     * Creates a plain object from an ImportUserEventsRequest message. Also converts values to other types if specified.
                     * @param message ImportUserEventsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ImportUserEventsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ImportUserEventsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ImportUserEventsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ImportCompletionDataRequest. */
                interface IImportCompletionDataRequest {

                    /** ImportCompletionDataRequest parent */
                    parent?: (string|null);

                    /** ImportCompletionDataRequest inputConfig */
                    inputConfig?: (google.cloud.retail.v2beta.ICompletionDataInputConfig|null);

                    /** ImportCompletionDataRequest notificationPubsubTopic */
                    notificationPubsubTopic?: (string|null);
                }

                /** Represents an ImportCompletionDataRequest. */
                class ImportCompletionDataRequest implements IImportCompletionDataRequest {

                    /**
                     * Constructs a new ImportCompletionDataRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IImportCompletionDataRequest);

                    /** ImportCompletionDataRequest parent. */
                    public parent: string;

                    /** ImportCompletionDataRequest inputConfig. */
                    public inputConfig?: (google.cloud.retail.v2beta.ICompletionDataInputConfig|null);

                    /** ImportCompletionDataRequest notificationPubsubTopic. */
                    public notificationPubsubTopic: string;

                    /**
                     * Creates a new ImportCompletionDataRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ImportCompletionDataRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IImportCompletionDataRequest): google.cloud.retail.v2beta.ImportCompletionDataRequest;

                    /**
                     * Encodes the specified ImportCompletionDataRequest message. Does not implicitly {@link google.cloud.retail.v2beta.ImportCompletionDataRequest.verify|verify} messages.
                     * @param message ImportCompletionDataRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IImportCompletionDataRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ImportCompletionDataRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ImportCompletionDataRequest.verify|verify} messages.
                     * @param message ImportCompletionDataRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IImportCompletionDataRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ImportCompletionDataRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ImportCompletionDataRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.ImportCompletionDataRequest;

                    /**
                     * Decodes an ImportCompletionDataRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ImportCompletionDataRequest
                     * @throws {Error} If the payload 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.retail.v2beta.ImportCompletionDataRequest;

                    /**
                     * Verifies an ImportCompletionDataRequest message.
                     * @param message Plain 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 ImportCompletionDataRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ImportCompletionDataRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ImportCompletionDataRequest;

                    /**
                     * Creates a plain object from an ImportCompletionDataRequest message. Also converts values to other types if specified.
                     * @param message ImportCompletionDataRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ImportCompletionDataRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ImportCompletionDataRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ImportCompletionDataRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ProductInputConfig. */
                interface IProductInputConfig {

                    /** ProductInputConfig productInlineSource */
                    productInlineSource?: (google.cloud.retail.v2beta.IProductInlineSource|null);

                    /** ProductInputConfig gcsSource */
                    gcsSource?: (google.cloud.retail.v2beta.IGcsSource|null);

                    /** ProductInputConfig bigQuerySource */
                    bigQuerySource?: (google.cloud.retail.v2beta.IBigQuerySource|null);
                }

                /** Represents a ProductInputConfig. */
                class ProductInputConfig implements IProductInputConfig {

                    /**
                     * Constructs a new ProductInputConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IProductInputConfig);

                    /** ProductInputConfig productInlineSource. */
                    public productInlineSource?: (google.cloud.retail.v2beta.IProductInlineSource|null);

                    /** ProductInputConfig gcsSource. */
                    public gcsSource?: (google.cloud.retail.v2beta.IGcsSource|null);

                    /** ProductInputConfig bigQuerySource. */
                    public bigQuerySource?: (google.cloud.retail.v2beta.IBigQuerySource|null);

                    /** ProductInputConfig source. */
                    public source?: ("productInlineSource"|"gcsSource"|"bigQuerySource");

                    /**
                     * Creates a new ProductInputConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ProductInputConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IProductInputConfig): google.cloud.retail.v2beta.ProductInputConfig;

                    /**
                     * Encodes the specified ProductInputConfig message. Does not implicitly {@link google.cloud.retail.v2beta.ProductInputConfig.verify|verify} messages.
                     * @param message ProductInputConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IProductInputConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ProductInputConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ProductInputConfig.verify|verify} messages.
                     * @param message ProductInputConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IProductInputConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ProductInputConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ProductInputConfig
                     * @throws {Error} If the payload is not 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.retail.v2beta.ProductInputConfig;

                    /**
                     * Decodes a ProductInputConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ProductInputConfig
                     * @throws {Error} If the payload 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.retail.v2beta.ProductInputConfig;

                    /**
                     * Verifies a ProductInputConfig message.
                     * @param message Plain 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 ProductInputConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ProductInputConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ProductInputConfig;

                    /**
                     * Creates a plain object from a ProductInputConfig message. Also converts values to other types if specified.
                     * @param message ProductInputConfig
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ProductInputConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ProductInputConfig to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ProductInputConfig
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a UserEventInputConfig. */
                interface IUserEventInputConfig {

                    /** UserEventInputConfig userEventInlineSource */
                    userEventInlineSource?: (google.cloud.retail.v2beta.IUserEventInlineSource|null);

                    /** UserEventInputConfig gcsSource */
                    gcsSource?: (google.cloud.retail.v2beta.IGcsSource|null);

                    /** UserEventInputConfig bigQuerySource */
                    bigQuerySource?: (google.cloud.retail.v2beta.IBigQuerySource|null);
                }

                /** Represents a UserEventInputConfig. */
                class UserEventInputConfig implements IUserEventInputConfig {

                    /**
                     * Constructs a new UserEventInputConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IUserEventInputConfig);

                    /** UserEventInputConfig userEventInlineSource. */
                    public userEventInlineSource?: (google.cloud.retail.v2beta.IUserEventInlineSource|null);

                    /** UserEventInputConfig gcsSource. */
                    public gcsSource?: (google.cloud.retail.v2beta.IGcsSource|null);

                    /** UserEventInputConfig bigQuerySource. */
                    public bigQuerySource?: (google.cloud.retail.v2beta.IBigQuerySource|null);

                    /** UserEventInputConfig source. */
                    public source?: ("userEventInlineSource"|"gcsSource"|"bigQuerySource");

                    /**
                     * Creates a new UserEventInputConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UserEventInputConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IUserEventInputConfig): google.cloud.retail.v2beta.UserEventInputConfig;

                    /**
                     * Encodes the specified UserEventInputConfig message. Does not implicitly {@link google.cloud.retail.v2beta.UserEventInputConfig.verify|verify} messages.
                     * @param message UserEventInputConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IUserEventInputConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UserEventInputConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.UserEventInputConfig.verify|verify} messages.
                     * @param message UserEventInputConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IUserEventInputConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a UserEventInputConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UserEventInputConfig
                     * @throws {Error} If the payload is not 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.retail.v2beta.UserEventInputConfig;

                    /**
                     * Decodes a UserEventInputConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UserEventInputConfig
                     * @throws {Error} If the payload 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.retail.v2beta.UserEventInputConfig;

                    /**
                     * Verifies a UserEventInputConfig message.
                     * @param message Plain 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 UserEventInputConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UserEventInputConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.UserEventInputConfig;

                    /**
                     * Creates a plain object from a UserEventInputConfig message. Also converts values to other types if specified.
                     * @param message UserEventInputConfig
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.UserEventInputConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UserEventInputConfig to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UserEventInputConfig
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CompletionDataInputConfig. */
                interface ICompletionDataInputConfig {

                    /** CompletionDataInputConfig bigQuerySource */
                    bigQuerySource?: (google.cloud.retail.v2beta.IBigQuerySource|null);
                }

                /** Represents a CompletionDataInputConfig. */
                class CompletionDataInputConfig implements ICompletionDataInputConfig {

                    /**
                     * Constructs a new CompletionDataInputConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.ICompletionDataInputConfig);

                    /** CompletionDataInputConfig bigQuerySource. */
                    public bigQuerySource?: (google.cloud.retail.v2beta.IBigQuerySource|null);

                    /** CompletionDataInputConfig source. */
                    public source?: "bigQuerySource";

                    /**
                     * Creates a new CompletionDataInputConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CompletionDataInputConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.ICompletionDataInputConfig): google.cloud.retail.v2beta.CompletionDataInputConfig;

                    /**
                     * Encodes the specified CompletionDataInputConfig message. Does not implicitly {@link google.cloud.retail.v2beta.CompletionDataInputConfig.verify|verify} messages.
                     * @param message CompletionDataInputConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.ICompletionDataInputConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CompletionDataInputConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.CompletionDataInputConfig.verify|verify} messages.
                     * @param message CompletionDataInputConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.ICompletionDataInputConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CompletionDataInputConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CompletionDataInputConfig
                     * @throws {Error} If the payload is not 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.retail.v2beta.CompletionDataInputConfig;

                    /**
                     * Decodes a CompletionDataInputConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CompletionDataInputConfig
                     * @throws {Error} If the payload 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.retail.v2beta.CompletionDataInputConfig;

                    /**
                     * Verifies a CompletionDataInputConfig message.
                     * @param message Plain 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 CompletionDataInputConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CompletionDataInputConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.CompletionDataInputConfig;

                    /**
                     * Creates a plain object from a CompletionDataInputConfig message. Also converts values to other types if specified.
                     * @param message CompletionDataInputConfig
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.CompletionDataInputConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CompletionDataInputConfig to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CompletionDataInputConfig
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ImportMetadata. */
                interface IImportMetadata {

                    /** ImportMetadata createTime */
                    createTime?: (google.protobuf.ITimestamp|null);

                    /** ImportMetadata updateTime */
                    updateTime?: (google.protobuf.ITimestamp|null);

                    /** ImportMetadata successCount */
                    successCount?: (number|Long|string|null);

                    /** ImportMetadata failureCount */
                    failureCount?: (number|Long|string|null);

                    /** ImportMetadata requestId */
                    requestId?: (string|null);

                    /** ImportMetadata notificationPubsubTopic */
                    notificationPubsubTopic?: (string|null);
                }

                /** Represents an ImportMetadata. */
                class ImportMetadata implements IImportMetadata {

                    /**
                     * Constructs a new ImportMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IImportMetadata);

                    /** ImportMetadata createTime. */
                    public createTime?: (google.protobuf.ITimestamp|null);

                    /** ImportMetadata updateTime. */
                    public updateTime?: (google.protobuf.ITimestamp|null);

                    /** ImportMetadata successCount. */
                    public successCount: (number|Long|string);

                    /** ImportMetadata failureCount. */
                    public failureCount: (number|Long|string);

                    /** ImportMetadata requestId. */
                    public requestId: string;

                    /** ImportMetadata notificationPubsubTopic. */
                    public notificationPubsubTopic: string;

                    /**
                     * Creates a new ImportMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ImportMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IImportMetadata): google.cloud.retail.v2beta.ImportMetadata;

                    /**
                     * Encodes the specified ImportMetadata message. Does not implicitly {@link google.cloud.retail.v2beta.ImportMetadata.verify|verify} messages.
                     * @param message ImportMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IImportMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ImportMetadata message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ImportMetadata.verify|verify} messages.
                     * @param message ImportMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IImportMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ImportMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ImportMetadata
                     * @throws {Error} If the payload is not 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.retail.v2beta.ImportMetadata;

                    /**
                     * Decodes an ImportMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ImportMetadata
                     * @throws {Error} If the payload 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.retail.v2beta.ImportMetadata;

                    /**
                     * Verifies an ImportMetadata message.
                     * @param message Plain 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 ImportMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ImportMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ImportMetadata;

                    /**
                     * Creates a plain object from an ImportMetadata message. Also converts values to other types if specified.
                     * @param message ImportMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ImportMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ImportMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ImportMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ImportProductsResponse. */
                interface IImportProductsResponse {

                    /** ImportProductsResponse errorSamples */
                    errorSamples?: (google.rpc.IStatus[]|null);

                    /** ImportProductsResponse errorsConfig */
                    errorsConfig?: (google.cloud.retail.v2beta.IImportErrorsConfig|null);
                }

                /** Represents an ImportProductsResponse. */
                class ImportProductsResponse implements IImportProductsResponse {

                    /**
                     * Constructs a new ImportProductsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IImportProductsResponse);

                    /** ImportProductsResponse errorSamples. */
                    public errorSamples: google.rpc.IStatus[];

                    /** ImportProductsResponse errorsConfig. */
                    public errorsConfig?: (google.cloud.retail.v2beta.IImportErrorsConfig|null);

                    /**
                     * Creates a new ImportProductsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ImportProductsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IImportProductsResponse): google.cloud.retail.v2beta.ImportProductsResponse;

                    /**
                     * Encodes the specified ImportProductsResponse message. Does not implicitly {@link google.cloud.retail.v2beta.ImportProductsResponse.verify|verify} messages.
                     * @param message ImportProductsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IImportProductsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ImportProductsResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ImportProductsResponse.verify|verify} messages.
                     * @param message ImportProductsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IImportProductsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ImportProductsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ImportProductsResponse
                     * @throws {Error} If the payload is not 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.retail.v2beta.ImportProductsResponse;

                    /**
                     * Decodes an ImportProductsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ImportProductsResponse
                     * @throws {Error} If the payload 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.retail.v2beta.ImportProductsResponse;

                    /**
                     * Verifies an ImportProductsResponse message.
                     * @param message Plain 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 ImportProductsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ImportProductsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ImportProductsResponse;

                    /**
                     * Creates a plain object from an ImportProductsResponse message. Also converts values to other types if specified.
                     * @param message ImportProductsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ImportProductsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ImportProductsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ImportProductsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ImportUserEventsResponse. */
                interface IImportUserEventsResponse {

                    /** ImportUserEventsResponse errorSamples */
                    errorSamples?: (google.rpc.IStatus[]|null);

                    /** ImportUserEventsResponse errorsConfig */
                    errorsConfig?: (google.cloud.retail.v2beta.IImportErrorsConfig|null);

                    /** ImportUserEventsResponse importSummary */
                    importSummary?: (google.cloud.retail.v2beta.IUserEventImportSummary|null);
                }

                /** Represents an ImportUserEventsResponse. */
                class ImportUserEventsResponse implements IImportUserEventsResponse {

                    /**
                     * Constructs a new ImportUserEventsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IImportUserEventsResponse);

                    /** ImportUserEventsResponse errorSamples. */
                    public errorSamples: google.rpc.IStatus[];

                    /** ImportUserEventsResponse errorsConfig. */
                    public errorsConfig?: (google.cloud.retail.v2beta.IImportErrorsConfig|null);

                    /** ImportUserEventsResponse importSummary. */
                    public importSummary?: (google.cloud.retail.v2beta.IUserEventImportSummary|null);

                    /**
                     * Creates a new ImportUserEventsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ImportUserEventsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IImportUserEventsResponse): google.cloud.retail.v2beta.ImportUserEventsResponse;

                    /**
                     * Encodes the specified ImportUserEventsResponse message. Does not implicitly {@link google.cloud.retail.v2beta.ImportUserEventsResponse.verify|verify} messages.
                     * @param message ImportUserEventsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IImportUserEventsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ImportUserEventsResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ImportUserEventsResponse.verify|verify} messages.
                     * @param message ImportUserEventsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IImportUserEventsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ImportUserEventsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ImportUserEventsResponse
                     * @throws {Error} If the payload is not 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.retail.v2beta.ImportUserEventsResponse;

                    /**
                     * Decodes an ImportUserEventsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ImportUserEventsResponse
                     * @throws {Error} If the payload 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.retail.v2beta.ImportUserEventsResponse;

                    /**
                     * Verifies an ImportUserEventsResponse message.
                     * @param message Plain 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 ImportUserEventsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ImportUserEventsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ImportUserEventsResponse;

                    /**
                     * Creates a plain object from an ImportUserEventsResponse message. Also converts values to other types if specified.
                     * @param message ImportUserEventsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ImportUserEventsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ImportUserEventsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ImportUserEventsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a UserEventImportSummary. */
                interface IUserEventImportSummary {

                    /** UserEventImportSummary joinedEventsCount */
                    joinedEventsCount?: (number|Long|string|null);

                    /** UserEventImportSummary unjoinedEventsCount */
                    unjoinedEventsCount?: (number|Long|string|null);
                }

                /** Represents a UserEventImportSummary. */
                class UserEventImportSummary implements IUserEventImportSummary {

                    /**
                     * Constructs a new UserEventImportSummary.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IUserEventImportSummary);

                    /** UserEventImportSummary joinedEventsCount. */
                    public joinedEventsCount: (number|Long|string);

                    /** UserEventImportSummary unjoinedEventsCount. */
                    public unjoinedEventsCount: (number|Long|string);

                    /**
                     * Creates a new UserEventImportSummary instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UserEventImportSummary instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IUserEventImportSummary): google.cloud.retail.v2beta.UserEventImportSummary;

                    /**
                     * Encodes the specified UserEventImportSummary message. Does not implicitly {@link google.cloud.retail.v2beta.UserEventImportSummary.verify|verify} messages.
                     * @param message UserEventImportSummary message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IUserEventImportSummary, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UserEventImportSummary message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.UserEventImportSummary.verify|verify} messages.
                     * @param message UserEventImportSummary message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IUserEventImportSummary, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a UserEventImportSummary message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UserEventImportSummary
                     * @throws {Error} If the payload is not 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.retail.v2beta.UserEventImportSummary;

                    /**
                     * Decodes a UserEventImportSummary message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UserEventImportSummary
                     * @throws {Error} If the payload 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.retail.v2beta.UserEventImportSummary;

                    /**
                     * Verifies a UserEventImportSummary message.
                     * @param message Plain 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 UserEventImportSummary message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UserEventImportSummary
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.UserEventImportSummary;

                    /**
                     * Creates a plain object from a UserEventImportSummary message. Also converts values to other types if specified.
                     * @param message UserEventImportSummary
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.UserEventImportSummary, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UserEventImportSummary to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UserEventImportSummary
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an ImportCompletionDataResponse. */
                interface IImportCompletionDataResponse {

                    /** ImportCompletionDataResponse errorSamples */
                    errorSamples?: (google.rpc.IStatus[]|null);
                }

                /** Represents an ImportCompletionDataResponse. */
                class ImportCompletionDataResponse implements IImportCompletionDataResponse {

                    /**
                     * Constructs a new ImportCompletionDataResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IImportCompletionDataResponse);

                    /** ImportCompletionDataResponse errorSamples. */
                    public errorSamples: google.rpc.IStatus[];

                    /**
                     * Creates a new ImportCompletionDataResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ImportCompletionDataResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IImportCompletionDataResponse): google.cloud.retail.v2beta.ImportCompletionDataResponse;

                    /**
                     * Encodes the specified ImportCompletionDataResponse message. Does not implicitly {@link google.cloud.retail.v2beta.ImportCompletionDataResponse.verify|verify} messages.
                     * @param message ImportCompletionDataResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IImportCompletionDataResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ImportCompletionDataResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ImportCompletionDataResponse.verify|verify} messages.
                     * @param message ImportCompletionDataResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IImportCompletionDataResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ImportCompletionDataResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ImportCompletionDataResponse
                     * @throws {Error} If the payload is not 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.retail.v2beta.ImportCompletionDataResponse;

                    /**
                     * Decodes an ImportCompletionDataResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ImportCompletionDataResponse
                     * @throws {Error} If the payload 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.retail.v2beta.ImportCompletionDataResponse;

                    /**
                     * Verifies an ImportCompletionDataResponse message.
                     * @param message Plain 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 ImportCompletionDataResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ImportCompletionDataResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ImportCompletionDataResponse;

                    /**
                     * Creates a plain object from an ImportCompletionDataResponse message. Also converts values to other types if specified.
                     * @param message ImportCompletionDataResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ImportCompletionDataResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ImportCompletionDataResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ImportCompletionDataResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a Product. */
                interface IProduct {

                    /** Product expireTime */
                    expireTime?: (google.protobuf.ITimestamp|null);

                    /** Product ttl */
                    ttl?: (google.protobuf.IDuration|null);

                    /** Product name */
                    name?: (string|null);

                    /** Product id */
                    id?: (string|null);

                    /** Product type */
                    type?: (google.cloud.retail.v2beta.Product.Type|keyof typeof google.cloud.retail.v2beta.Product.Type|null);

                    /** Product primaryProductId */
                    primaryProductId?: (string|null);

                    /** Product collectionMemberIds */
                    collectionMemberIds?: (string[]|null);

                    /** Product gtin */
                    gtin?: (string|null);

                    /** Product categories */
                    categories?: (string[]|null);

                    /** Product title */
                    title?: (string|null);

                    /** Product brands */
                    brands?: (string[]|null);

                    /** Product description */
                    description?: (string|null);

                    /** Product languageCode */
                    languageCode?: (string|null);

                    /** Product attributes */
                    attributes?: ({ [k: string]: google.cloud.retail.v2beta.ICustomAttribute }|null);

                    /** Product tags */
                    tags?: (string[]|null);

                    /** Product priceInfo */
                    priceInfo?: (google.cloud.retail.v2beta.IPriceInfo|null);

                    /** Product rating */
                    rating?: (google.cloud.retail.v2beta.IRating|null);

                    /** Product availableTime */
                    availableTime?: (google.protobuf.ITimestamp|null);

                    /** Product availability */
                    availability?: (google.cloud.retail.v2beta.Product.Availability|keyof typeof google.cloud.retail.v2beta.Product.Availability|null);

                    /** Product availableQuantity */
                    availableQuantity?: (google.protobuf.IInt32Value|null);

                    /** Product fulfillmentInfo */
                    fulfillmentInfo?: (google.cloud.retail.v2beta.IFulfillmentInfo[]|null);

                    /** Product uri */
                    uri?: (string|null);

                    /** Product images */
                    images?: (google.cloud.retail.v2beta.IImage[]|null);

                    /** Product audience */
                    audience?: (google.cloud.retail.v2beta.IAudience|null);

                    /** Product colorInfo */
                    colorInfo?: (google.cloud.retail.v2beta.IColorInfo|null);

                    /** Product sizes */
                    sizes?: (string[]|null);

                    /** Product materials */
                    materials?: (string[]|null);

                    /** Product patterns */
                    patterns?: (string[]|null);

                    /** Product conditions */
                    conditions?: (string[]|null);

                    /** Product promotions */
                    promotions?: (google.cloud.retail.v2beta.IPromotion[]|null);

                    /** Product publishTime */
                    publishTime?: (google.protobuf.ITimestamp|null);

                    /** Product retrievableFields */
                    retrievableFields?: (google.protobuf.IFieldMask|null);

                    /** Product variants */
                    variants?: (google.cloud.retail.v2beta.IProduct[]|null);

                    /** Product localInventories */
                    localInventories?: (google.cloud.retail.v2beta.ILocalInventory[]|null);
                }

                /** Represents a Product. */
                class Product implements IProduct {

                    /**
                     * Constructs a new Product.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IProduct);

                    /** Product expireTime. */
                    public expireTime?: (google.protobuf.ITimestamp|null);

                    /** Product ttl. */
                    public ttl?: (google.protobuf.IDuration|null);

                    /** Product name. */
                    public name: string;

                    /** Product id. */
                    public id: string;

                    /** Product type. */
                    public type: (google.cloud.retail.v2beta.Product.Type|keyof typeof google.cloud.retail.v2beta.Product.Type);

                    /** Product primaryProductId. */
                    public primaryProductId: string;

                    /** Product collectionMemberIds. */
                    public collectionMemberIds: string[];

                    /** Product gtin. */
                    public gtin: string;

                    /** Product categories. */
                    public categories: string[];

                    /** Product title. */
                    public title: string;

                    /** Product brands. */
                    public brands: string[];

                    /** Product description. */
                    public description: string;

                    /** Product languageCode. */
                    public languageCode: string;

                    /** Product attributes. */
                    public attributes: { [k: string]: google.cloud.retail.v2beta.ICustomAttribute };

                    /** Product tags. */
                    public tags: string[];

                    /** Product priceInfo. */
                    public priceInfo?: (google.cloud.retail.v2beta.IPriceInfo|null);

                    /** Product rating. */
                    public rating?: (google.cloud.retail.v2beta.IRating|null);

                    /** Product availableTime. */
                    public availableTime?: (google.protobuf.ITimestamp|null);

                    /** Product availability. */
                    public availability: (google.cloud.retail.v2beta.Product.Availability|keyof typeof google.cloud.retail.v2beta.Product.Availability);

                    /** Product availableQuantity. */
                    public availableQuantity?: (google.protobuf.IInt32Value|null);

                    /** Product fulfillmentInfo. */
                    public fulfillmentInfo: google.cloud.retail.v2beta.IFulfillmentInfo[];

                    /** Product uri. */
                    public uri: string;

                    /** Product images. */
                    public images: google.cloud.retail.v2beta.IImage[];

                    /** Product audience. */
                    public audience?: (google.cloud.retail.v2beta.IAudience|null);

                    /** Product colorInfo. */
                    public colorInfo?: (google.cloud.retail.v2beta.IColorInfo|null);

                    /** Product sizes. */
                    public sizes: string[];

                    /** Product materials. */
                    public materials: string[];

                    /** Product patterns. */
                    public patterns: string[];

                    /** Product conditions. */
                    public conditions: string[];

                    /** Product promotions. */
                    public promotions: google.cloud.retail.v2beta.IPromotion[];

                    /** Product publishTime. */
                    public publishTime?: (google.protobuf.ITimestamp|null);

                    /** Product retrievableFields. */
                    public retrievableFields?: (google.protobuf.IFieldMask|null);

                    /** Product variants. */
                    public variants: google.cloud.retail.v2beta.IProduct[];

                    /** Product localInventories. */
                    public localInventories: google.cloud.retail.v2beta.ILocalInventory[];

                    /** Product expiration. */
                    public expiration?: ("expireTime"|"ttl");

                    /**
                     * Creates a new Product instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Product instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IProduct): google.cloud.retail.v2beta.Product;

                    /**
                     * Encodes the specified Product message. Does not implicitly {@link google.cloud.retail.v2beta.Product.verify|verify} messages.
                     * @param message Product message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IProduct, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Product message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.Product.verify|verify} messages.
                     * @param message Product message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IProduct, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Product message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Product
                     * @throws {Error} If the payload is not 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.retail.v2beta.Product;

                    /**
                     * Decodes a Product message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Product
                     * @throws {Error} If the payload 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.retail.v2beta.Product;

                    /**
                     * Verifies a Product message.
                     * @param message Plain 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 Product message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Product
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.Product;

                    /**
                     * Creates a plain object from a Product message. Also converts values to other types if specified.
                     * @param message Product
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.Product, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Product to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Product
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace Product {

                    /** Type enum. */
                    enum Type {
                        TYPE_UNSPECIFIED = 0,
                        PRIMARY = 1,
                        VARIANT = 2,
                        COLLECTION = 3
                    }

                    /** Availability enum. */
                    enum Availability {
                        AVAILABILITY_UNSPECIFIED = 0,
                        IN_STOCK = 1,
                        OUT_OF_STOCK = 2,
                        PREORDER = 3,
                        BACKORDER = 4
                    }
                }

                /** Properties of a Promotion. */
                interface IPromotion {

                    /** Promotion promotionId */
                    promotionId?: (string|null);
                }

                /** Represents a Promotion. */
                class Promotion implements IPromotion {

                    /**
                     * Constructs a new Promotion.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IPromotion);

                    /** Promotion promotionId. */
                    public promotionId: string;

                    /**
                     * Creates a new Promotion instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Promotion instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IPromotion): google.cloud.retail.v2beta.Promotion;

                    /**
                     * Encodes the specified Promotion message. Does not implicitly {@link google.cloud.retail.v2beta.Promotion.verify|verify} messages.
                     * @param message Promotion message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IPromotion, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Promotion message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.Promotion.verify|verify} messages.
                     * @param message Promotion message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IPromotion, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Promotion message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Promotion
                     * @throws {Error} If the payload is not 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.retail.v2beta.Promotion;

                    /**
                     * Decodes a Promotion message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Promotion
                     * @throws {Error} If the payload 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.retail.v2beta.Promotion;

                    /**
                     * Verifies a Promotion message.
                     * @param message Plain 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 Promotion message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Promotion
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.Promotion;

                    /**
                     * Creates a plain object from a Promotion message. Also converts values to other types if specified.
                     * @param message Promotion
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.Promotion, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Promotion to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Promotion
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a UserEvent. */
                interface IUserEvent {

                    /** UserEvent eventType */
                    eventType?: (string|null);

                    /** UserEvent visitorId */
                    visitorId?: (string|null);

                    /** UserEvent sessionId */
                    sessionId?: (string|null);

                    /** UserEvent eventTime */
                    eventTime?: (google.protobuf.ITimestamp|null);

                    /** UserEvent experimentIds */
                    experimentIds?: (string[]|null);

                    /** UserEvent attributionToken */
                    attributionToken?: (string|null);

                    /** UserEvent productDetails */
                    productDetails?: (google.cloud.retail.v2beta.IProductDetail[]|null);

                    /** UserEvent completionDetail */
                    completionDetail?: (google.cloud.retail.v2beta.ICompletionDetail|null);

                    /** UserEvent attributes */
                    attributes?: ({ [k: string]: google.cloud.retail.v2beta.ICustomAttribute }|null);

                    /** UserEvent cartId */
                    cartId?: (string|null);

                    /** UserEvent purchaseTransaction */
                    purchaseTransaction?: (google.cloud.retail.v2beta.IPurchaseTransaction|null);

                    /** UserEvent searchQuery */
                    searchQuery?: (string|null);

                    /** UserEvent filter */
                    filter?: (string|null);

                    /** UserEvent orderBy */
                    orderBy?: (string|null);

                    /** UserEvent offset */
                    offset?: (number|null);

                    /** UserEvent pageCategories */
                    pageCategories?: (string[]|null);

                    /** UserEvent userInfo */
                    userInfo?: (google.cloud.retail.v2beta.IUserInfo|null);

                    /** UserEvent uri */
                    uri?: (string|null);

                    /** UserEvent referrerUri */
                    referrerUri?: (string|null);

                    /** UserEvent pageViewId */
                    pageViewId?: (string|null);

                    /** UserEvent entity */
                    entity?: (string|null);
                }

                /** Represents a UserEvent. */
                class UserEvent implements IUserEvent {

                    /**
                     * Constructs a new UserEvent.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IUserEvent);

                    /** UserEvent eventType. */
                    public eventType: string;

                    /** UserEvent visitorId. */
                    public visitorId: string;

                    /** UserEvent sessionId. */
                    public sessionId: string;

                    /** UserEvent eventTime. */
                    public eventTime?: (google.protobuf.ITimestamp|null);

                    /** UserEvent experimentIds. */
                    public experimentIds: string[];

                    /** UserEvent attributionToken. */
                    public attributionToken: string;

                    /** UserEvent productDetails. */
                    public productDetails: google.cloud.retail.v2beta.IProductDetail[];

                    /** UserEvent completionDetail. */
                    public completionDetail?: (google.cloud.retail.v2beta.ICompletionDetail|null);

                    /** UserEvent attributes. */
                    public attributes: { [k: string]: google.cloud.retail.v2beta.ICustomAttribute };

                    /** UserEvent cartId. */
                    public cartId: string;

                    /** UserEvent purchaseTransaction. */
                    public purchaseTransaction?: (google.cloud.retail.v2beta.IPurchaseTransaction|null);

                    /** UserEvent searchQuery. */
                    public searchQuery: string;

                    /** UserEvent filter. */
                    public filter: string;

                    /** UserEvent orderBy. */
                    public orderBy: string;

                    /** UserEvent offset. */
                    public offset: number;

                    /** UserEvent pageCategories. */
                    public pageCategories: string[];

                    /** UserEvent userInfo. */
                    public userInfo?: (google.cloud.retail.v2beta.IUserInfo|null);

                    /** UserEvent uri. */
                    public uri: string;

                    /** UserEvent referrerUri. */
                    public referrerUri: string;

                    /** UserEvent pageViewId. */
                    public pageViewId: string;

                    /** UserEvent entity. */
                    public entity: string;

                    /**
                     * Creates a new UserEvent instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UserEvent instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IUserEvent): google.cloud.retail.v2beta.UserEvent;

                    /**
                     * Encodes the specified UserEvent message. Does not implicitly {@link google.cloud.retail.v2beta.UserEvent.verify|verify} messages.
                     * @param message UserEvent message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IUserEvent, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UserEvent message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.UserEvent.verify|verify} messages.
                     * @param message UserEvent message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IUserEvent, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a UserEvent message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UserEvent
                     * @throws {Error} If the payload is not 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.retail.v2beta.UserEvent;

                    /**
                     * Decodes a UserEvent message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UserEvent
                     * @throws {Error} If the payload 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.retail.v2beta.UserEvent;

                    /**
                     * Verifies a UserEvent message.
                     * @param message Plain 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 UserEvent message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UserEvent
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.UserEvent;

                    /**
                     * Creates a plain object from a UserEvent message. Also converts values to other types if specified.
                     * @param message UserEvent
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.UserEvent, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UserEvent to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UserEvent
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ProductDetail. */
                interface IProductDetail {

                    /** ProductDetail product */
                    product?: (google.cloud.retail.v2beta.IProduct|null);

                    /** ProductDetail quantity */
                    quantity?: (google.protobuf.IInt32Value|null);
                }

                /** Represents a ProductDetail. */
                class ProductDetail implements IProductDetail {

                    /**
                     * Constructs a new ProductDetail.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IProductDetail);

                    /** ProductDetail product. */
                    public product?: (google.cloud.retail.v2beta.IProduct|null);

                    /** ProductDetail quantity. */
                    public quantity?: (google.protobuf.IInt32Value|null);

                    /**
                     * Creates a new ProductDetail instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ProductDetail instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IProductDetail): google.cloud.retail.v2beta.ProductDetail;

                    /**
                     * Encodes the specified ProductDetail message. Does not implicitly {@link google.cloud.retail.v2beta.ProductDetail.verify|verify} messages.
                     * @param message ProductDetail message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IProductDetail, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ProductDetail message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ProductDetail.verify|verify} messages.
                     * @param message ProductDetail message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IProductDetail, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ProductDetail message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ProductDetail
                     * @throws {Error} If the payload is not 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.retail.v2beta.ProductDetail;

                    /**
                     * Decodes a ProductDetail message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ProductDetail
                     * @throws {Error} If the payload 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.retail.v2beta.ProductDetail;

                    /**
                     * Verifies a ProductDetail message.
                     * @param message Plain 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 ProductDetail message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ProductDetail
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ProductDetail;

                    /**
                     * Creates a plain object from a ProductDetail message. Also converts values to other types if specified.
                     * @param message ProductDetail
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ProductDetail, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ProductDetail to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ProductDetail
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CompletionDetail. */
                interface ICompletionDetail {

                    /** CompletionDetail completionAttributionToken */
                    completionAttributionToken?: (string|null);

                    /** CompletionDetail selectedSuggestion */
                    selectedSuggestion?: (string|null);

                    /** CompletionDetail selectedPosition */
                    selectedPosition?: (number|null);
                }

                /** Represents a CompletionDetail. */
                class CompletionDetail implements ICompletionDetail {

                    /**
                     * Constructs a new CompletionDetail.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.ICompletionDetail);

                    /** CompletionDetail completionAttributionToken. */
                    public completionAttributionToken: string;

                    /** CompletionDetail selectedSuggestion. */
                    public selectedSuggestion: string;

                    /** CompletionDetail selectedPosition. */
                    public selectedPosition: number;

                    /**
                     * Creates a new CompletionDetail instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CompletionDetail instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.ICompletionDetail): google.cloud.retail.v2beta.CompletionDetail;

                    /**
                     * Encodes the specified CompletionDetail message. Does not implicitly {@link google.cloud.retail.v2beta.CompletionDetail.verify|verify} messages.
                     * @param message CompletionDetail message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.ICompletionDetail, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CompletionDetail message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.CompletionDetail.verify|verify} messages.
                     * @param message CompletionDetail message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.ICompletionDetail, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CompletionDetail message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CompletionDetail
                     * @throws {Error} If the payload is not 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.retail.v2beta.CompletionDetail;

                    /**
                     * Decodes a CompletionDetail message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CompletionDetail
                     * @throws {Error} If the payload 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.retail.v2beta.CompletionDetail;

                    /**
                     * Verifies a CompletionDetail message.
                     * @param message Plain 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 CompletionDetail message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CompletionDetail
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.CompletionDetail;

                    /**
                     * Creates a plain object from a CompletionDetail message. Also converts values to other types if specified.
                     * @param message CompletionDetail
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.CompletionDetail, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CompletionDetail to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CompletionDetail
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PurchaseTransaction. */
                interface IPurchaseTransaction {

                    /** PurchaseTransaction id */
                    id?: (string|null);

                    /** PurchaseTransaction revenue */
                    revenue?: (number|null);

                    /** PurchaseTransaction tax */
                    tax?: (number|null);

                    /** PurchaseTransaction cost */
                    cost?: (number|null);

                    /** PurchaseTransaction currencyCode */
                    currencyCode?: (string|null);
                }

                /** Represents a PurchaseTransaction. */
                class PurchaseTransaction implements IPurchaseTransaction {

                    /**
                     * Constructs a new PurchaseTransaction.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IPurchaseTransaction);

                    /** PurchaseTransaction id. */
                    public id: string;

                    /** PurchaseTransaction revenue. */
                    public revenue: number;

                    /** PurchaseTransaction tax. */
                    public tax: number;

                    /** PurchaseTransaction cost. */
                    public cost: number;

                    /** PurchaseTransaction currencyCode. */
                    public currencyCode: string;

                    /**
                     * Creates a new PurchaseTransaction instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PurchaseTransaction instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IPurchaseTransaction): google.cloud.retail.v2beta.PurchaseTransaction;

                    /**
                     * Encodes the specified PurchaseTransaction message. Does not implicitly {@link google.cloud.retail.v2beta.PurchaseTransaction.verify|verify} messages.
                     * @param message PurchaseTransaction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IPurchaseTransaction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PurchaseTransaction message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.PurchaseTransaction.verify|verify} messages.
                     * @param message PurchaseTransaction message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IPurchaseTransaction, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PurchaseTransaction message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PurchaseTransaction
                     * @throws {Error} If the payload is not 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.retail.v2beta.PurchaseTransaction;

                    /**
                     * Decodes a PurchaseTransaction message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PurchaseTransaction
                     * @throws {Error} If the payload 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.retail.v2beta.PurchaseTransaction;

                    /**
                     * Verifies a PurchaseTransaction message.
                     * @param message Plain 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 PurchaseTransaction message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PurchaseTransaction
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.PurchaseTransaction;

                    /**
                     * Creates a plain object from a PurchaseTransaction message. Also converts values to other types if specified.
                     * @param message PurchaseTransaction
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.PurchaseTransaction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PurchaseTransaction to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PurchaseTransaction
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Represents a CatalogService */
                class CatalogService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new CatalogService 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 CatalogService 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): CatalogService;

                    /**
                     * Calls ListCatalogs.
                     * @param request ListCatalogsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListCatalogsResponse
                     */
                    public listCatalogs(request: google.cloud.retail.v2beta.IListCatalogsRequest, callback: google.cloud.retail.v2beta.CatalogService.ListCatalogsCallback): void;

                    /**
                     * Calls ListCatalogs.
                     * @param request ListCatalogsRequest message or plain object
                     * @returns Promise
                     */
                    public listCatalogs(request: google.cloud.retail.v2beta.IListCatalogsRequest): Promise<google.cloud.retail.v2beta.ListCatalogsResponse>;

                    /**
                     * Calls UpdateCatalog.
                     * @param request UpdateCatalogRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Catalog
                     */
                    public updateCatalog(request: google.cloud.retail.v2beta.IUpdateCatalogRequest, callback: google.cloud.retail.v2beta.CatalogService.UpdateCatalogCallback): void;

                    /**
                     * Calls UpdateCatalog.
                     * @param request UpdateCatalogRequest message or plain object
                     * @returns Promise
                     */
                    public updateCatalog(request: google.cloud.retail.v2beta.IUpdateCatalogRequest): Promise<google.cloud.retail.v2beta.Catalog>;

                    /**
                     * Calls SetDefaultBranch.
                     * @param request SetDefaultBranchRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Empty
                     */
                    public setDefaultBranch(request: google.cloud.retail.v2beta.ISetDefaultBranchRequest, callback: google.cloud.retail.v2beta.CatalogService.SetDefaultBranchCallback): void;

                    /**
                     * Calls SetDefaultBranch.
                     * @param request SetDefaultBranchRequest message or plain object
                     * @returns Promise
                     */
                    public setDefaultBranch(request: google.cloud.retail.v2beta.ISetDefaultBranchRequest): Promise<google.protobuf.Empty>;

                    /**
                     * Calls GetDefaultBranch.
                     * @param request GetDefaultBranchRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and GetDefaultBranchResponse
                     */
                    public getDefaultBranch(request: google.cloud.retail.v2beta.IGetDefaultBranchRequest, callback: google.cloud.retail.v2beta.CatalogService.GetDefaultBranchCallback): void;

                    /**
                     * Calls GetDefaultBranch.
                     * @param request GetDefaultBranchRequest message or plain object
                     * @returns Promise
                     */
                    public getDefaultBranch(request: google.cloud.retail.v2beta.IGetDefaultBranchRequest): Promise<google.cloud.retail.v2beta.GetDefaultBranchResponse>;

                    /**
                     * Calls GetCompletionConfig.
                     * @param request GetCompletionConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and CompletionConfig
                     */
                    public getCompletionConfig(request: google.cloud.retail.v2beta.IGetCompletionConfigRequest, callback: google.cloud.retail.v2beta.CatalogService.GetCompletionConfigCallback): void;

                    /**
                     * Calls GetCompletionConfig.
                     * @param request GetCompletionConfigRequest message or plain object
                     * @returns Promise
                     */
                    public getCompletionConfig(request: google.cloud.retail.v2beta.IGetCompletionConfigRequest): Promise<google.cloud.retail.v2beta.CompletionConfig>;

                    /**
                     * Calls UpdateCompletionConfig.
                     * @param request UpdateCompletionConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and CompletionConfig
                     */
                    public updateCompletionConfig(request: google.cloud.retail.v2beta.IUpdateCompletionConfigRequest, callback: google.cloud.retail.v2beta.CatalogService.UpdateCompletionConfigCallback): void;

                    /**
                     * Calls UpdateCompletionConfig.
                     * @param request UpdateCompletionConfigRequest message or plain object
                     * @returns Promise
                     */
                    public updateCompletionConfig(request: google.cloud.retail.v2beta.IUpdateCompletionConfigRequest): Promise<google.cloud.retail.v2beta.CompletionConfig>;

                    /**
                     * Calls GetAttributesConfig.
                     * @param request GetAttributesConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and AttributesConfig
                     */
                    public getAttributesConfig(request: google.cloud.retail.v2beta.IGetAttributesConfigRequest, callback: google.cloud.retail.v2beta.CatalogService.GetAttributesConfigCallback): void;

                    /**
                     * Calls GetAttributesConfig.
                     * @param request GetAttributesConfigRequest message or plain object
                     * @returns Promise
                     */
                    public getAttributesConfig(request: google.cloud.retail.v2beta.IGetAttributesConfigRequest): Promise<google.cloud.retail.v2beta.AttributesConfig>;

                    /**
                     * Calls UpdateAttributesConfig.
                     * @param request UpdateAttributesConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and AttributesConfig
                     */
                    public updateAttributesConfig(request: google.cloud.retail.v2beta.IUpdateAttributesConfigRequest, callback: google.cloud.retail.v2beta.CatalogService.UpdateAttributesConfigCallback): void;

                    /**
                     * Calls UpdateAttributesConfig.
                     * @param request UpdateAttributesConfigRequest message or plain object
                     * @returns Promise
                     */
                    public updateAttributesConfig(request: google.cloud.retail.v2beta.IUpdateAttributesConfigRequest): Promise<google.cloud.retail.v2beta.AttributesConfig>;

                    /**
                     * Calls AddCatalogAttribute.
                     * @param request AddCatalogAttributeRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and AttributesConfig
                     */
                    public addCatalogAttribute(request: google.cloud.retail.v2beta.IAddCatalogAttributeRequest, callback: google.cloud.retail.v2beta.CatalogService.AddCatalogAttributeCallback): void;

                    /**
                     * Calls AddCatalogAttribute.
                     * @param request AddCatalogAttributeRequest message or plain object
                     * @returns Promise
                     */
                    public addCatalogAttribute(request: google.cloud.retail.v2beta.IAddCatalogAttributeRequest): Promise<google.cloud.retail.v2beta.AttributesConfig>;

                    /**
                     * Calls RemoveCatalogAttribute.
                     * @param request RemoveCatalogAttributeRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and AttributesConfig
                     */
                    public removeCatalogAttribute(request: google.cloud.retail.v2beta.IRemoveCatalogAttributeRequest, callback: google.cloud.retail.v2beta.CatalogService.RemoveCatalogAttributeCallback): void;

                    /**
                     * Calls RemoveCatalogAttribute.
                     * @param request RemoveCatalogAttributeRequest message or plain object
                     * @returns Promise
                     */
                    public removeCatalogAttribute(request: google.cloud.retail.v2beta.IRemoveCatalogAttributeRequest): Promise<google.cloud.retail.v2beta.AttributesConfig>;

                    /**
                     * Calls BatchRemoveCatalogAttributes.
                     * @param request BatchRemoveCatalogAttributesRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and BatchRemoveCatalogAttributesResponse
                     */
                    public batchRemoveCatalogAttributes(request: google.cloud.retail.v2beta.IBatchRemoveCatalogAttributesRequest, callback: google.cloud.retail.v2beta.CatalogService.BatchRemoveCatalogAttributesCallback): void;

                    /**
                     * Calls BatchRemoveCatalogAttributes.
                     * @param request BatchRemoveCatalogAttributesRequest message or plain object
                     * @returns Promise
                     */
                    public batchRemoveCatalogAttributes(request: google.cloud.retail.v2beta.IBatchRemoveCatalogAttributesRequest): Promise<google.cloud.retail.v2beta.BatchRemoveCatalogAttributesResponse>;

                    /**
                     * Calls ReplaceCatalogAttribute.
                     * @param request ReplaceCatalogAttributeRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and AttributesConfig
                     */
                    public replaceCatalogAttribute(request: google.cloud.retail.v2beta.IReplaceCatalogAttributeRequest, callback: google.cloud.retail.v2beta.CatalogService.ReplaceCatalogAttributeCallback): void;

                    /**
                     * Calls ReplaceCatalogAttribute.
                     * @param request ReplaceCatalogAttributeRequest message or plain object
                     * @returns Promise
                     */
                    public replaceCatalogAttribute(request: google.cloud.retail.v2beta.IReplaceCatalogAttributeRequest): Promise<google.cloud.retail.v2beta.AttributesConfig>;
                }

                namespace CatalogService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.CatalogService|listCatalogs}.
                     * @param error Error, if any
                     * @param [response] ListCatalogsResponse
                     */
                    type ListCatalogsCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.ListCatalogsResponse) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.CatalogService|updateCatalog}.
                     * @param error Error, if any
                     * @param [response] Catalog
                     */
                    type UpdateCatalogCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.Catalog) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.CatalogService|setDefaultBranch}.
                     * @param error Error, if any
                     * @param [response] Empty
                     */
                    type SetDefaultBranchCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.CatalogService|getDefaultBranch}.
                     * @param error Error, if any
                     * @param [response] GetDefaultBranchResponse
                     */
                    type GetDefaultBranchCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.GetDefaultBranchResponse) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.CatalogService|getCompletionConfig}.
                     * @param error Error, if any
                     * @param [response] CompletionConfig
                     */
                    type GetCompletionConfigCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.CompletionConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.CatalogService|updateCompletionConfig}.
                     * @param error Error, if any
                     * @param [response] CompletionConfig
                     */
                    type UpdateCompletionConfigCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.CompletionConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.CatalogService|getAttributesConfig}.
                     * @param error Error, if any
                     * @param [response] AttributesConfig
                     */
                    type GetAttributesConfigCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.AttributesConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.CatalogService|updateAttributesConfig}.
                     * @param error Error, if any
                     * @param [response] AttributesConfig
                     */
                    type UpdateAttributesConfigCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.AttributesConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.CatalogService|addCatalogAttribute}.
                     * @param error Error, if any
                     * @param [response] AttributesConfig
                     */
                    type AddCatalogAttributeCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.AttributesConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.CatalogService|removeCatalogAttribute}.
                     * @param error Error, if any
                     * @param [response] AttributesConfig
                     */
                    type RemoveCatalogAttributeCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.AttributesConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.CatalogService|batchRemoveCatalogAttributes}.
                     * @param error Error, if any
                     * @param [response] BatchRemoveCatalogAttributesResponse
                     */
                    type BatchRemoveCatalogAttributesCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.BatchRemoveCatalogAttributesResponse) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.CatalogService|replaceCatalogAttribute}.
                     * @param error Error, if any
                     * @param [response] AttributesConfig
                     */
                    type ReplaceCatalogAttributeCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.AttributesConfig) => void;
                }

                /** Properties of a ListCatalogsRequest. */
                interface IListCatalogsRequest {

                    /** ListCatalogsRequest parent */
                    parent?: (string|null);

                    /** ListCatalogsRequest pageSize */
                    pageSize?: (number|null);

                    /** ListCatalogsRequest pageToken */
                    pageToken?: (string|null);
                }

                /** Represents a ListCatalogsRequest. */
                class ListCatalogsRequest implements IListCatalogsRequest {

                    /**
                     * Constructs a new ListCatalogsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IListCatalogsRequest);

                    /** ListCatalogsRequest parent. */
                    public parent: string;

                    /** ListCatalogsRequest pageSize. */
                    public pageSize: number;

                    /** ListCatalogsRequest pageToken. */
                    public pageToken: string;

                    /**
                     * Creates a new ListCatalogsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListCatalogsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IListCatalogsRequest): google.cloud.retail.v2beta.ListCatalogsRequest;

                    /**
                     * Encodes the specified ListCatalogsRequest message. Does not implicitly {@link google.cloud.retail.v2beta.ListCatalogsRequest.verify|verify} messages.
                     * @param message ListCatalogsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IListCatalogsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListCatalogsRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ListCatalogsRequest.verify|verify} messages.
                     * @param message ListCatalogsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IListCatalogsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListCatalogsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListCatalogsRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.ListCatalogsRequest;

                    /**
                     * Decodes a ListCatalogsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListCatalogsRequest
                     * @throws {Error} If the payload 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.retail.v2beta.ListCatalogsRequest;

                    /**
                     * Verifies a ListCatalogsRequest message.
                     * @param message Plain 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 ListCatalogsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListCatalogsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ListCatalogsRequest;

                    /**
                     * Creates a plain object from a ListCatalogsRequest message. Also converts values to other types if specified.
                     * @param message ListCatalogsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ListCatalogsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListCatalogsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListCatalogsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListCatalogsResponse. */
                interface IListCatalogsResponse {

                    /** ListCatalogsResponse catalogs */
                    catalogs?: (google.cloud.retail.v2beta.ICatalog[]|null);

                    /** ListCatalogsResponse nextPageToken */
                    nextPageToken?: (string|null);
                }

                /** Represents a ListCatalogsResponse. */
                class ListCatalogsResponse implements IListCatalogsResponse {

                    /**
                     * Constructs a new ListCatalogsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IListCatalogsResponse);

                    /** ListCatalogsResponse catalogs. */
                    public catalogs: google.cloud.retail.v2beta.ICatalog[];

                    /** ListCatalogsResponse nextPageToken. */
                    public nextPageToken: string;

                    /**
                     * Creates a new ListCatalogsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListCatalogsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IListCatalogsResponse): google.cloud.retail.v2beta.ListCatalogsResponse;

                    /**
                     * Encodes the specified ListCatalogsResponse message. Does not implicitly {@link google.cloud.retail.v2beta.ListCatalogsResponse.verify|verify} messages.
                     * @param message ListCatalogsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IListCatalogsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListCatalogsResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ListCatalogsResponse.verify|verify} messages.
                     * @param message ListCatalogsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IListCatalogsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListCatalogsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListCatalogsResponse
                     * @throws {Error} If the payload is not 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.retail.v2beta.ListCatalogsResponse;

                    /**
                     * Decodes a ListCatalogsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListCatalogsResponse
                     * @throws {Error} If the payload 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.retail.v2beta.ListCatalogsResponse;

                    /**
                     * Verifies a ListCatalogsResponse message.
                     * @param message Plain 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 ListCatalogsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListCatalogsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ListCatalogsResponse;

                    /**
                     * Creates a plain object from a ListCatalogsResponse message. Also converts values to other types if specified.
                     * @param message ListCatalogsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ListCatalogsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListCatalogsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListCatalogsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateCatalogRequest. */
                interface IUpdateCatalogRequest {

                    /** UpdateCatalogRequest catalog */
                    catalog?: (google.cloud.retail.v2beta.ICatalog|null);

                    /** UpdateCatalogRequest updateMask */
                    updateMask?: (google.protobuf.IFieldMask|null);
                }

                /** Represents an UpdateCatalogRequest. */
                class UpdateCatalogRequest implements IUpdateCatalogRequest {

                    /**
                     * Constructs a new UpdateCatalogRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IUpdateCatalogRequest);

                    /** UpdateCatalogRequest catalog. */
                    public catalog?: (google.cloud.retail.v2beta.ICatalog|null);

                    /** UpdateCatalogRequest updateMask. */
                    public updateMask?: (google.protobuf.IFieldMask|null);

                    /**
                     * Creates a new UpdateCatalogRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateCatalogRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IUpdateCatalogRequest): google.cloud.retail.v2beta.UpdateCatalogRequest;

                    /**
                     * Encodes the specified UpdateCatalogRequest message. Does not implicitly {@link google.cloud.retail.v2beta.UpdateCatalogRequest.verify|verify} messages.
                     * @param message UpdateCatalogRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IUpdateCatalogRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateCatalogRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.UpdateCatalogRequest.verify|verify} messages.
                     * @param message UpdateCatalogRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IUpdateCatalogRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateCatalogRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateCatalogRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.UpdateCatalogRequest;

                    /**
                     * Decodes an UpdateCatalogRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateCatalogRequest
                     * @throws {Error} If the payload 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.retail.v2beta.UpdateCatalogRequest;

                    /**
                     * Verifies an UpdateCatalogRequest message.
                     * @param message Plain 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 UpdateCatalogRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateCatalogRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.UpdateCatalogRequest;

                    /**
                     * Creates a plain object from an UpdateCatalogRequest message. Also converts values to other types if specified.
                     * @param message UpdateCatalogRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.UpdateCatalogRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateCatalogRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateCatalogRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SetDefaultBranchRequest. */
                interface ISetDefaultBranchRequest {

                    /** SetDefaultBranchRequest catalog */
                    catalog?: (string|null);

                    /** SetDefaultBranchRequest branchId */
                    branchId?: (string|null);

                    /** SetDefaultBranchRequest note */
                    note?: (string|null);

                    /** SetDefaultBranchRequest force */
                    force?: (boolean|null);
                }

                /** Represents a SetDefaultBranchRequest. */
                class SetDefaultBranchRequest implements ISetDefaultBranchRequest {

                    /**
                     * Constructs a new SetDefaultBranchRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.ISetDefaultBranchRequest);

                    /** SetDefaultBranchRequest catalog. */
                    public catalog: string;

                    /** SetDefaultBranchRequest branchId. */
                    public branchId: string;

                    /** SetDefaultBranchRequest note. */
                    public note: string;

                    /** SetDefaultBranchRequest force. */
                    public force: boolean;

                    /**
                     * Creates a new SetDefaultBranchRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SetDefaultBranchRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.ISetDefaultBranchRequest): google.cloud.retail.v2beta.SetDefaultBranchRequest;

                    /**
                     * Encodes the specified SetDefaultBranchRequest message. Does not implicitly {@link google.cloud.retail.v2beta.SetDefaultBranchRequest.verify|verify} messages.
                     * @param message SetDefaultBranchRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.ISetDefaultBranchRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SetDefaultBranchRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.SetDefaultBranchRequest.verify|verify} messages.
                     * @param message SetDefaultBranchRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.ISetDefaultBranchRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SetDefaultBranchRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SetDefaultBranchRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.SetDefaultBranchRequest;

                    /**
                     * Decodes a SetDefaultBranchRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SetDefaultBranchRequest
                     * @throws {Error} If the payload 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.retail.v2beta.SetDefaultBranchRequest;

                    /**
                     * Verifies a SetDefaultBranchRequest message.
                     * @param message Plain 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 SetDefaultBranchRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SetDefaultBranchRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.SetDefaultBranchRequest;

                    /**
                     * Creates a plain object from a SetDefaultBranchRequest message. Also converts values to other types if specified.
                     * @param message SetDefaultBranchRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.SetDefaultBranchRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SetDefaultBranchRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SetDefaultBranchRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetDefaultBranchRequest. */
                interface IGetDefaultBranchRequest {

                    /** GetDefaultBranchRequest catalog */
                    catalog?: (string|null);
                }

                /** Represents a GetDefaultBranchRequest. */
                class GetDefaultBranchRequest implements IGetDefaultBranchRequest {

                    /**
                     * Constructs a new GetDefaultBranchRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IGetDefaultBranchRequest);

                    /** GetDefaultBranchRequest catalog. */
                    public catalog: string;

                    /**
                     * Creates a new GetDefaultBranchRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetDefaultBranchRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IGetDefaultBranchRequest): google.cloud.retail.v2beta.GetDefaultBranchRequest;

                    /**
                     * Encodes the specified GetDefaultBranchRequest message. Does not implicitly {@link google.cloud.retail.v2beta.GetDefaultBranchRequest.verify|verify} messages.
                     * @param message GetDefaultBranchRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IGetDefaultBranchRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetDefaultBranchRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.GetDefaultBranchRequest.verify|verify} messages.
                     * @param message GetDefaultBranchRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IGetDefaultBranchRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetDefaultBranchRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetDefaultBranchRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.GetDefaultBranchRequest;

                    /**
                     * Decodes a GetDefaultBranchRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetDefaultBranchRequest
                     * @throws {Error} If the payload 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.retail.v2beta.GetDefaultBranchRequest;

                    /**
                     * Verifies a GetDefaultBranchRequest message.
                     * @param message Plain 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 GetDefaultBranchRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetDefaultBranchRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.GetDefaultBranchRequest;

                    /**
                     * Creates a plain object from a GetDefaultBranchRequest message. Also converts values to other types if specified.
                     * @param message GetDefaultBranchRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.GetDefaultBranchRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetDefaultBranchRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetDefaultBranchRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetDefaultBranchResponse. */
                interface IGetDefaultBranchResponse {

                    /** GetDefaultBranchResponse branch */
                    branch?: (string|null);

                    /** GetDefaultBranchResponse setTime */
                    setTime?: (google.protobuf.ITimestamp|null);

                    /** GetDefaultBranchResponse note */
                    note?: (string|null);
                }

                /** Represents a GetDefaultBranchResponse. */
                class GetDefaultBranchResponse implements IGetDefaultBranchResponse {

                    /**
                     * Constructs a new GetDefaultBranchResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IGetDefaultBranchResponse);

                    /** GetDefaultBranchResponse branch. */
                    public branch: string;

                    /** GetDefaultBranchResponse setTime. */
                    public setTime?: (google.protobuf.ITimestamp|null);

                    /** GetDefaultBranchResponse note. */
                    public note: string;

                    /**
                     * Creates a new GetDefaultBranchResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetDefaultBranchResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IGetDefaultBranchResponse): google.cloud.retail.v2beta.GetDefaultBranchResponse;

                    /**
                     * Encodes the specified GetDefaultBranchResponse message. Does not implicitly {@link google.cloud.retail.v2beta.GetDefaultBranchResponse.verify|verify} messages.
                     * @param message GetDefaultBranchResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IGetDefaultBranchResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetDefaultBranchResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.GetDefaultBranchResponse.verify|verify} messages.
                     * @param message GetDefaultBranchResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IGetDefaultBranchResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetDefaultBranchResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetDefaultBranchResponse
                     * @throws {Error} If the payload is not 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.retail.v2beta.GetDefaultBranchResponse;

                    /**
                     * Decodes a GetDefaultBranchResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetDefaultBranchResponse
                     * @throws {Error} If the payload 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.retail.v2beta.GetDefaultBranchResponse;

                    /**
                     * Verifies a GetDefaultBranchResponse message.
                     * @param message Plain 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 GetDefaultBranchResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetDefaultBranchResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.GetDefaultBranchResponse;

                    /**
                     * Creates a plain object from a GetDefaultBranchResponse message. Also converts values to other types if specified.
                     * @param message GetDefaultBranchResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.GetDefaultBranchResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetDefaultBranchResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetDefaultBranchResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetCompletionConfigRequest. */
                interface IGetCompletionConfigRequest {

                    /** GetCompletionConfigRequest name */
                    name?: (string|null);
                }

                /** Represents a GetCompletionConfigRequest. */
                class GetCompletionConfigRequest implements IGetCompletionConfigRequest {

                    /**
                     * Constructs a new GetCompletionConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IGetCompletionConfigRequest);

                    /** GetCompletionConfigRequest name. */
                    public name: string;

                    /**
                     * Creates a new GetCompletionConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetCompletionConfigRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IGetCompletionConfigRequest): google.cloud.retail.v2beta.GetCompletionConfigRequest;

                    /**
                     * Encodes the specified GetCompletionConfigRequest message. Does not implicitly {@link google.cloud.retail.v2beta.GetCompletionConfigRequest.verify|verify} messages.
                     * @param message GetCompletionConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IGetCompletionConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetCompletionConfigRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.GetCompletionConfigRequest.verify|verify} messages.
                     * @param message GetCompletionConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IGetCompletionConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetCompletionConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetCompletionConfigRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.GetCompletionConfigRequest;

                    /**
                     * Decodes a GetCompletionConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetCompletionConfigRequest
                     * @throws {Error} If the payload 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.retail.v2beta.GetCompletionConfigRequest;

                    /**
                     * Verifies a GetCompletionConfigRequest message.
                     * @param message Plain 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 GetCompletionConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetCompletionConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.GetCompletionConfigRequest;

                    /**
                     * Creates a plain object from a GetCompletionConfigRequest message. Also converts values to other types if specified.
                     * @param message GetCompletionConfigRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.GetCompletionConfigRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetCompletionConfigRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetCompletionConfigRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateCompletionConfigRequest. */
                interface IUpdateCompletionConfigRequest {

                    /** UpdateCompletionConfigRequest completionConfig */
                    completionConfig?: (google.cloud.retail.v2beta.ICompletionConfig|null);

                    /** UpdateCompletionConfigRequest updateMask */
                    updateMask?: (google.protobuf.IFieldMask|null);
                }

                /** Represents an UpdateCompletionConfigRequest. */
                class UpdateCompletionConfigRequest implements IUpdateCompletionConfigRequest {

                    /**
                     * Constructs a new UpdateCompletionConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IUpdateCompletionConfigRequest);

                    /** UpdateCompletionConfigRequest completionConfig. */
                    public completionConfig?: (google.cloud.retail.v2beta.ICompletionConfig|null);

                    /** UpdateCompletionConfigRequest updateMask. */
                    public updateMask?: (google.protobuf.IFieldMask|null);

                    /**
                     * Creates a new UpdateCompletionConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateCompletionConfigRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IUpdateCompletionConfigRequest): google.cloud.retail.v2beta.UpdateCompletionConfigRequest;

                    /**
                     * Encodes the specified UpdateCompletionConfigRequest message. Does not implicitly {@link google.cloud.retail.v2beta.UpdateCompletionConfigRequest.verify|verify} messages.
                     * @param message UpdateCompletionConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IUpdateCompletionConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateCompletionConfigRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.UpdateCompletionConfigRequest.verify|verify} messages.
                     * @param message UpdateCompletionConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IUpdateCompletionConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateCompletionConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateCompletionConfigRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.UpdateCompletionConfigRequest;

                    /**
                     * Decodes an UpdateCompletionConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateCompletionConfigRequest
                     * @throws {Error} If the payload 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.retail.v2beta.UpdateCompletionConfigRequest;

                    /**
                     * Verifies an UpdateCompletionConfigRequest message.
                     * @param message Plain 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 UpdateCompletionConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateCompletionConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.UpdateCompletionConfigRequest;

                    /**
                     * Creates a plain object from an UpdateCompletionConfigRequest message. Also converts values to other types if specified.
                     * @param message UpdateCompletionConfigRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.UpdateCompletionConfigRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateCompletionConfigRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateCompletionConfigRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetAttributesConfigRequest. */
                interface IGetAttributesConfigRequest {

                    /** GetAttributesConfigRequest name */
                    name?: (string|null);
                }

                /** Represents a GetAttributesConfigRequest. */
                class GetAttributesConfigRequest implements IGetAttributesConfigRequest {

                    /**
                     * Constructs a new GetAttributesConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IGetAttributesConfigRequest);

                    /** GetAttributesConfigRequest name. */
                    public name: string;

                    /**
                     * Creates a new GetAttributesConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetAttributesConfigRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IGetAttributesConfigRequest): google.cloud.retail.v2beta.GetAttributesConfigRequest;

                    /**
                     * Encodes the specified GetAttributesConfigRequest message. Does not implicitly {@link google.cloud.retail.v2beta.GetAttributesConfigRequest.verify|verify} messages.
                     * @param message GetAttributesConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IGetAttributesConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetAttributesConfigRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.GetAttributesConfigRequest.verify|verify} messages.
                     * @param message GetAttributesConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IGetAttributesConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetAttributesConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetAttributesConfigRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.GetAttributesConfigRequest;

                    /**
                     * Decodes a GetAttributesConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetAttributesConfigRequest
                     * @throws {Error} If the payload 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.retail.v2beta.GetAttributesConfigRequest;

                    /**
                     * Verifies a GetAttributesConfigRequest message.
                     * @param message Plain 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 GetAttributesConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetAttributesConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.GetAttributesConfigRequest;

                    /**
                     * Creates a plain object from a GetAttributesConfigRequest message. Also converts values to other types if specified.
                     * @param message GetAttributesConfigRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.GetAttributesConfigRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetAttributesConfigRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetAttributesConfigRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateAttributesConfigRequest. */
                interface IUpdateAttributesConfigRequest {

                    /** UpdateAttributesConfigRequest attributesConfig */
                    attributesConfig?: (google.cloud.retail.v2beta.IAttributesConfig|null);

                    /** UpdateAttributesConfigRequest updateMask */
                    updateMask?: (google.protobuf.IFieldMask|null);
                }

                /** Represents an UpdateAttributesConfigRequest. */
                class UpdateAttributesConfigRequest implements IUpdateAttributesConfigRequest {

                    /**
                     * Constructs a new UpdateAttributesConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IUpdateAttributesConfigRequest);

                    /** UpdateAttributesConfigRequest attributesConfig. */
                    public attributesConfig?: (google.cloud.retail.v2beta.IAttributesConfig|null);

                    /** UpdateAttributesConfigRequest updateMask. */
                    public updateMask?: (google.protobuf.IFieldMask|null);

                    /**
                     * Creates a new UpdateAttributesConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateAttributesConfigRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IUpdateAttributesConfigRequest): google.cloud.retail.v2beta.UpdateAttributesConfigRequest;

                    /**
                     * Encodes the specified UpdateAttributesConfigRequest message. Does not implicitly {@link google.cloud.retail.v2beta.UpdateAttributesConfigRequest.verify|verify} messages.
                     * @param message UpdateAttributesConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IUpdateAttributesConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateAttributesConfigRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.UpdateAttributesConfigRequest.verify|verify} messages.
                     * @param message UpdateAttributesConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IUpdateAttributesConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateAttributesConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateAttributesConfigRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.UpdateAttributesConfigRequest;

                    /**
                     * Decodes an UpdateAttributesConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateAttributesConfigRequest
                     * @throws {Error} If the payload 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.retail.v2beta.UpdateAttributesConfigRequest;

                    /**
                     * Verifies an UpdateAttributesConfigRequest message.
                     * @param message Plain 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 UpdateAttributesConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateAttributesConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.UpdateAttributesConfigRequest;

                    /**
                     * Creates a plain object from an UpdateAttributesConfigRequest message. Also converts values to other types if specified.
                     * @param message UpdateAttributesConfigRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.UpdateAttributesConfigRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateAttributesConfigRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateAttributesConfigRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an AddCatalogAttributeRequest. */
                interface IAddCatalogAttributeRequest {

                    /** AddCatalogAttributeRequest attributesConfig */
                    attributesConfig?: (string|null);

                    /** AddCatalogAttributeRequest catalogAttribute */
                    catalogAttribute?: (google.cloud.retail.v2beta.ICatalogAttribute|null);
                }

                /** Represents an AddCatalogAttributeRequest. */
                class AddCatalogAttributeRequest implements IAddCatalogAttributeRequest {

                    /**
                     * Constructs a new AddCatalogAttributeRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IAddCatalogAttributeRequest);

                    /** AddCatalogAttributeRequest attributesConfig. */
                    public attributesConfig: string;

                    /** AddCatalogAttributeRequest catalogAttribute. */
                    public catalogAttribute?: (google.cloud.retail.v2beta.ICatalogAttribute|null);

                    /**
                     * Creates a new AddCatalogAttributeRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns AddCatalogAttributeRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IAddCatalogAttributeRequest): google.cloud.retail.v2beta.AddCatalogAttributeRequest;

                    /**
                     * Encodes the specified AddCatalogAttributeRequest message. Does not implicitly {@link google.cloud.retail.v2beta.AddCatalogAttributeRequest.verify|verify} messages.
                     * @param message AddCatalogAttributeRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IAddCatalogAttributeRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified AddCatalogAttributeRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.AddCatalogAttributeRequest.verify|verify} messages.
                     * @param message AddCatalogAttributeRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IAddCatalogAttributeRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an AddCatalogAttributeRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns AddCatalogAttributeRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.AddCatalogAttributeRequest;

                    /**
                     * Decodes an AddCatalogAttributeRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns AddCatalogAttributeRequest
                     * @throws {Error} If the payload 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.retail.v2beta.AddCatalogAttributeRequest;

                    /**
                     * Verifies an AddCatalogAttributeRequest message.
                     * @param message Plain 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 AddCatalogAttributeRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns AddCatalogAttributeRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.AddCatalogAttributeRequest;

                    /**
                     * Creates a plain object from an AddCatalogAttributeRequest message. Also converts values to other types if specified.
                     * @param message AddCatalogAttributeRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.AddCatalogAttributeRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this AddCatalogAttributeRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for AddCatalogAttributeRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RemoveCatalogAttributeRequest. */
                interface IRemoveCatalogAttributeRequest {

                    /** RemoveCatalogAttributeRequest attributesConfig */
                    attributesConfig?: (string|null);

                    /** RemoveCatalogAttributeRequest key */
                    key?: (string|null);
                }

                /** Represents a RemoveCatalogAttributeRequest. */
                class RemoveCatalogAttributeRequest implements IRemoveCatalogAttributeRequest {

                    /**
                     * Constructs a new RemoveCatalogAttributeRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IRemoveCatalogAttributeRequest);

                    /** RemoveCatalogAttributeRequest attributesConfig. */
                    public attributesConfig: string;

                    /** RemoveCatalogAttributeRequest key. */
                    public key: string;

                    /**
                     * Creates a new RemoveCatalogAttributeRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RemoveCatalogAttributeRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IRemoveCatalogAttributeRequest): google.cloud.retail.v2beta.RemoveCatalogAttributeRequest;

                    /**
                     * Encodes the specified RemoveCatalogAttributeRequest message. Does not implicitly {@link google.cloud.retail.v2beta.RemoveCatalogAttributeRequest.verify|verify} messages.
                     * @param message RemoveCatalogAttributeRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IRemoveCatalogAttributeRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RemoveCatalogAttributeRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.RemoveCatalogAttributeRequest.verify|verify} messages.
                     * @param message RemoveCatalogAttributeRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IRemoveCatalogAttributeRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RemoveCatalogAttributeRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RemoveCatalogAttributeRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.RemoveCatalogAttributeRequest;

                    /**
                     * Decodes a RemoveCatalogAttributeRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RemoveCatalogAttributeRequest
                     * @throws {Error} If the payload 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.retail.v2beta.RemoveCatalogAttributeRequest;

                    /**
                     * Verifies a RemoveCatalogAttributeRequest message.
                     * @param message Plain 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 RemoveCatalogAttributeRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RemoveCatalogAttributeRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.RemoveCatalogAttributeRequest;

                    /**
                     * Creates a plain object from a RemoveCatalogAttributeRequest message. Also converts values to other types if specified.
                     * @param message RemoveCatalogAttributeRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.RemoveCatalogAttributeRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RemoveCatalogAttributeRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RemoveCatalogAttributeRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a BatchRemoveCatalogAttributesRequest. */
                interface IBatchRemoveCatalogAttributesRequest {

                    /** BatchRemoveCatalogAttributesRequest attributesConfig */
                    attributesConfig?: (string|null);

                    /** BatchRemoveCatalogAttributesRequest attributeKeys */
                    attributeKeys?: (string[]|null);
                }

                /** Represents a BatchRemoveCatalogAttributesRequest. */
                class BatchRemoveCatalogAttributesRequest implements IBatchRemoveCatalogAttributesRequest {

                    /**
                     * Constructs a new BatchRemoveCatalogAttributesRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IBatchRemoveCatalogAttributesRequest);

                    /** BatchRemoveCatalogAttributesRequest attributesConfig. */
                    public attributesConfig: string;

                    /** BatchRemoveCatalogAttributesRequest attributeKeys. */
                    public attributeKeys: string[];

                    /**
                     * Creates a new BatchRemoveCatalogAttributesRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns BatchRemoveCatalogAttributesRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IBatchRemoveCatalogAttributesRequest): google.cloud.retail.v2beta.BatchRemoveCatalogAttributesRequest;

                    /**
                     * Encodes the specified BatchRemoveCatalogAttributesRequest message. Does not implicitly {@link google.cloud.retail.v2beta.BatchRemoveCatalogAttributesRequest.verify|verify} messages.
                     * @param message BatchRemoveCatalogAttributesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IBatchRemoveCatalogAttributesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified BatchRemoveCatalogAttributesRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.BatchRemoveCatalogAttributesRequest.verify|verify} messages.
                     * @param message BatchRemoveCatalogAttributesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IBatchRemoveCatalogAttributesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a BatchRemoveCatalogAttributesRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns BatchRemoveCatalogAttributesRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.BatchRemoveCatalogAttributesRequest;

                    /**
                     * Decodes a BatchRemoveCatalogAttributesRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns BatchRemoveCatalogAttributesRequest
                     * @throws {Error} If the payload 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.retail.v2beta.BatchRemoveCatalogAttributesRequest;

                    /**
                     * Verifies a BatchRemoveCatalogAttributesRequest message.
                     * @param message Plain 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 BatchRemoveCatalogAttributesRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns BatchRemoveCatalogAttributesRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.BatchRemoveCatalogAttributesRequest;

                    /**
                     * Creates a plain object from a BatchRemoveCatalogAttributesRequest message. Also converts values to other types if specified.
                     * @param message BatchRemoveCatalogAttributesRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.BatchRemoveCatalogAttributesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this BatchRemoveCatalogAttributesRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for BatchRemoveCatalogAttributesRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a BatchRemoveCatalogAttributesResponse. */
                interface IBatchRemoveCatalogAttributesResponse {

                    /** BatchRemoveCatalogAttributesResponse deletedCatalogAttributes */
                    deletedCatalogAttributes?: (string[]|null);

                    /** BatchRemoveCatalogAttributesResponse resetCatalogAttributes */
                    resetCatalogAttributes?: (string[]|null);
                }

                /** Represents a BatchRemoveCatalogAttributesResponse. */
                class BatchRemoveCatalogAttributesResponse implements IBatchRemoveCatalogAttributesResponse {

                    /**
                     * Constructs a new BatchRemoveCatalogAttributesResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IBatchRemoveCatalogAttributesResponse);

                    /** BatchRemoveCatalogAttributesResponse deletedCatalogAttributes. */
                    public deletedCatalogAttributes: string[];

                    /** BatchRemoveCatalogAttributesResponse resetCatalogAttributes. */
                    public resetCatalogAttributes: string[];

                    /**
                     * Creates a new BatchRemoveCatalogAttributesResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns BatchRemoveCatalogAttributesResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IBatchRemoveCatalogAttributesResponse): google.cloud.retail.v2beta.BatchRemoveCatalogAttributesResponse;

                    /**
                     * Encodes the specified BatchRemoveCatalogAttributesResponse message. Does not implicitly {@link google.cloud.retail.v2beta.BatchRemoveCatalogAttributesResponse.verify|verify} messages.
                     * @param message BatchRemoveCatalogAttributesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IBatchRemoveCatalogAttributesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified BatchRemoveCatalogAttributesResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.BatchRemoveCatalogAttributesResponse.verify|verify} messages.
                     * @param message BatchRemoveCatalogAttributesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IBatchRemoveCatalogAttributesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a BatchRemoveCatalogAttributesResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns BatchRemoveCatalogAttributesResponse
                     * @throws {Error} If the payload is not 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.retail.v2beta.BatchRemoveCatalogAttributesResponse;

                    /**
                     * Decodes a BatchRemoveCatalogAttributesResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns BatchRemoveCatalogAttributesResponse
                     * @throws {Error} If the payload 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.retail.v2beta.BatchRemoveCatalogAttributesResponse;

                    /**
                     * Verifies a BatchRemoveCatalogAttributesResponse message.
                     * @param message Plain 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 BatchRemoveCatalogAttributesResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns BatchRemoveCatalogAttributesResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.BatchRemoveCatalogAttributesResponse;

                    /**
                     * Creates a plain object from a BatchRemoveCatalogAttributesResponse message. Also converts values to other types if specified.
                     * @param message BatchRemoveCatalogAttributesResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.BatchRemoveCatalogAttributesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this BatchRemoveCatalogAttributesResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for BatchRemoveCatalogAttributesResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ReplaceCatalogAttributeRequest. */
                interface IReplaceCatalogAttributeRequest {

                    /** ReplaceCatalogAttributeRequest attributesConfig */
                    attributesConfig?: (string|null);

                    /** ReplaceCatalogAttributeRequest catalogAttribute */
                    catalogAttribute?: (google.cloud.retail.v2beta.ICatalogAttribute|null);

                    /** ReplaceCatalogAttributeRequest updateMask */
                    updateMask?: (google.protobuf.IFieldMask|null);
                }

                /** Represents a ReplaceCatalogAttributeRequest. */
                class ReplaceCatalogAttributeRequest implements IReplaceCatalogAttributeRequest {

                    /**
                     * Constructs a new ReplaceCatalogAttributeRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IReplaceCatalogAttributeRequest);

                    /** ReplaceCatalogAttributeRequest attributesConfig. */
                    public attributesConfig: string;

                    /** ReplaceCatalogAttributeRequest catalogAttribute. */
                    public catalogAttribute?: (google.cloud.retail.v2beta.ICatalogAttribute|null);

                    /** ReplaceCatalogAttributeRequest updateMask. */
                    public updateMask?: (google.protobuf.IFieldMask|null);

                    /**
                     * Creates a new ReplaceCatalogAttributeRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ReplaceCatalogAttributeRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IReplaceCatalogAttributeRequest): google.cloud.retail.v2beta.ReplaceCatalogAttributeRequest;

                    /**
                     * Encodes the specified ReplaceCatalogAttributeRequest message. Does not implicitly {@link google.cloud.retail.v2beta.ReplaceCatalogAttributeRequest.verify|verify} messages.
                     * @param message ReplaceCatalogAttributeRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IReplaceCatalogAttributeRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ReplaceCatalogAttributeRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ReplaceCatalogAttributeRequest.verify|verify} messages.
                     * @param message ReplaceCatalogAttributeRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IReplaceCatalogAttributeRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ReplaceCatalogAttributeRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ReplaceCatalogAttributeRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.ReplaceCatalogAttributeRequest;

                    /**
                     * Decodes a ReplaceCatalogAttributeRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ReplaceCatalogAttributeRequest
                     * @throws {Error} If the payload 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.retail.v2beta.ReplaceCatalogAttributeRequest;

                    /**
                     * Verifies a ReplaceCatalogAttributeRequest message.
                     * @param message Plain 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 ReplaceCatalogAttributeRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ReplaceCatalogAttributeRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ReplaceCatalogAttributeRequest;

                    /**
                     * Creates a plain object from a ReplaceCatalogAttributeRequest message. Also converts values to other types if specified.
                     * @param message ReplaceCatalogAttributeRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ReplaceCatalogAttributeRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ReplaceCatalogAttributeRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ReplaceCatalogAttributeRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Represents a CompletionService */
                class CompletionService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new CompletionService 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 CompletionService 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): CompletionService;

                    /**
                     * Calls CompleteQuery.
                     * @param request CompleteQueryRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and CompleteQueryResponse
                     */
                    public completeQuery(request: google.cloud.retail.v2beta.ICompleteQueryRequest, callback: google.cloud.retail.v2beta.CompletionService.CompleteQueryCallback): void;

                    /**
                     * Calls CompleteQuery.
                     * @param request CompleteQueryRequest message or plain object
                     * @returns Promise
                     */
                    public completeQuery(request: google.cloud.retail.v2beta.ICompleteQueryRequest): Promise<google.cloud.retail.v2beta.CompleteQueryResponse>;

                    /**
                     * Calls ImportCompletionData.
                     * @param request ImportCompletionDataRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public importCompletionData(request: google.cloud.retail.v2beta.IImportCompletionDataRequest, callback: google.cloud.retail.v2beta.CompletionService.ImportCompletionDataCallback): void;

                    /**
                     * Calls ImportCompletionData.
                     * @param request ImportCompletionDataRequest message or plain object
                     * @returns Promise
                     */
                    public importCompletionData(request: google.cloud.retail.v2beta.IImportCompletionDataRequest): Promise<google.longrunning.Operation>;
                }

                namespace CompletionService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.CompletionService|completeQuery}.
                     * @param error Error, if any
                     * @param [response] CompleteQueryResponse
                     */
                    type CompleteQueryCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.CompleteQueryResponse) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.CompletionService|importCompletionData}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type ImportCompletionDataCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;
                }

                /** Properties of a CompleteQueryRequest. */
                interface ICompleteQueryRequest {

                    /** CompleteQueryRequest catalog */
                    catalog?: (string|null);

                    /** CompleteQueryRequest query */
                    query?: (string|null);

                    /** CompleteQueryRequest visitorId */
                    visitorId?: (string|null);

                    /** CompleteQueryRequest languageCodes */
                    languageCodes?: (string[]|null);

                    /** CompleteQueryRequest deviceType */
                    deviceType?: (string|null);

                    /** CompleteQueryRequest dataset */
                    dataset?: (string|null);

                    /** CompleteQueryRequest maxSuggestions */
                    maxSuggestions?: (number|null);

                    /** CompleteQueryRequest enableAttributeSuggestions */
                    enableAttributeSuggestions?: (boolean|null);

                    /** CompleteQueryRequest entity */
                    entity?: (string|null);
                }

                /** Represents a CompleteQueryRequest. */
                class CompleteQueryRequest implements ICompleteQueryRequest {

                    /**
                     * Constructs a new CompleteQueryRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.ICompleteQueryRequest);

                    /** CompleteQueryRequest catalog. */
                    public catalog: string;

                    /** CompleteQueryRequest query. */
                    public query: string;

                    /** CompleteQueryRequest visitorId. */
                    public visitorId: string;

                    /** CompleteQueryRequest languageCodes. */
                    public languageCodes: string[];

                    /** CompleteQueryRequest deviceType. */
                    public deviceType: string;

                    /** CompleteQueryRequest dataset. */
                    public dataset: string;

                    /** CompleteQueryRequest maxSuggestions. */
                    public maxSuggestions: number;

                    /** CompleteQueryRequest enableAttributeSuggestions. */
                    public enableAttributeSuggestions: boolean;

                    /** CompleteQueryRequest entity. */
                    public entity: string;

                    /**
                     * Creates a new CompleteQueryRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CompleteQueryRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.ICompleteQueryRequest): google.cloud.retail.v2beta.CompleteQueryRequest;

                    /**
                     * Encodes the specified CompleteQueryRequest message. Does not implicitly {@link google.cloud.retail.v2beta.CompleteQueryRequest.verify|verify} messages.
                     * @param message CompleteQueryRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.ICompleteQueryRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CompleteQueryRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.CompleteQueryRequest.verify|verify} messages.
                     * @param message CompleteQueryRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.ICompleteQueryRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CompleteQueryRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CompleteQueryRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.CompleteQueryRequest;

                    /**
                     * Decodes a CompleteQueryRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CompleteQueryRequest
                     * @throws {Error} If the payload 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.retail.v2beta.CompleteQueryRequest;

                    /**
                     * Verifies a CompleteQueryRequest message.
                     * @param message Plain 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 CompleteQueryRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CompleteQueryRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.CompleteQueryRequest;

                    /**
                     * Creates a plain object from a CompleteQueryRequest message. Also converts values to other types if specified.
                     * @param message CompleteQueryRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.CompleteQueryRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CompleteQueryRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CompleteQueryRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CompleteQueryResponse. */
                interface ICompleteQueryResponse {

                    /** CompleteQueryResponse completionResults */
                    completionResults?: (google.cloud.retail.v2beta.CompleteQueryResponse.ICompletionResult[]|null);

                    /** CompleteQueryResponse attributionToken */
                    attributionToken?: (string|null);

                    /** CompleteQueryResponse recentSearchResults */
                    recentSearchResults?: (google.cloud.retail.v2beta.CompleteQueryResponse.IRecentSearchResult[]|null);

                    /** CompleteQueryResponse attributeResults */
                    attributeResults?: ({ [k: string]: google.cloud.retail.v2beta.CompleteQueryResponse.IAttributeResult }|null);
                }

                /** Represents a CompleteQueryResponse. */
                class CompleteQueryResponse implements ICompleteQueryResponse {

                    /**
                     * Constructs a new CompleteQueryResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.ICompleteQueryResponse);

                    /** CompleteQueryResponse completionResults. */
                    public completionResults: google.cloud.retail.v2beta.CompleteQueryResponse.ICompletionResult[];

                    /** CompleteQueryResponse attributionToken. */
                    public attributionToken: string;

                    /** CompleteQueryResponse recentSearchResults. */
                    public recentSearchResults: google.cloud.retail.v2beta.CompleteQueryResponse.IRecentSearchResult[];

                    /** CompleteQueryResponse attributeResults. */
                    public attributeResults: { [k: string]: google.cloud.retail.v2beta.CompleteQueryResponse.IAttributeResult };

                    /**
                     * Creates a new CompleteQueryResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CompleteQueryResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.ICompleteQueryResponse): google.cloud.retail.v2beta.CompleteQueryResponse;

                    /**
                     * Encodes the specified CompleteQueryResponse message. Does not implicitly {@link google.cloud.retail.v2beta.CompleteQueryResponse.verify|verify} messages.
                     * @param message CompleteQueryResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.ICompleteQueryResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CompleteQueryResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.CompleteQueryResponse.verify|verify} messages.
                     * @param message CompleteQueryResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.ICompleteQueryResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CompleteQueryResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CompleteQueryResponse
                     * @throws {Error} If the payload is not 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.retail.v2beta.CompleteQueryResponse;

                    /**
                     * Decodes a CompleteQueryResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CompleteQueryResponse
                     * @throws {Error} If the payload 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.retail.v2beta.CompleteQueryResponse;

                    /**
                     * Verifies a CompleteQueryResponse message.
                     * @param message Plain 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 CompleteQueryResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CompleteQueryResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.CompleteQueryResponse;

                    /**
                     * Creates a plain object from a CompleteQueryResponse message. Also converts values to other types if specified.
                     * @param message CompleteQueryResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.CompleteQueryResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CompleteQueryResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CompleteQueryResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace CompleteQueryResponse {

                    /** Properties of a CompletionResult. */
                    interface ICompletionResult {

                        /** CompletionResult suggestion */
                        suggestion?: (string|null);

                        /** CompletionResult attributes */
                        attributes?: ({ [k: string]: google.cloud.retail.v2beta.ICustomAttribute }|null);
                    }

                    /** Represents a CompletionResult. */
                    class CompletionResult implements ICompletionResult {

                        /**
                         * Constructs a new CompletionResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.CompleteQueryResponse.ICompletionResult);

                        /** CompletionResult suggestion. */
                        public suggestion: string;

                        /** CompletionResult attributes. */
                        public attributes: { [k: string]: google.cloud.retail.v2beta.ICustomAttribute };

                        /**
                         * Creates a new CompletionResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns CompletionResult instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.CompleteQueryResponse.ICompletionResult): google.cloud.retail.v2beta.CompleteQueryResponse.CompletionResult;

                        /**
                         * Encodes the specified CompletionResult message. Does not implicitly {@link google.cloud.retail.v2beta.CompleteQueryResponse.CompletionResult.verify|verify} messages.
                         * @param message CompletionResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.CompleteQueryResponse.ICompletionResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified CompletionResult message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.CompleteQueryResponse.CompletionResult.verify|verify} messages.
                         * @param message CompletionResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.CompleteQueryResponse.ICompletionResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a CompletionResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns CompletionResult
                         * @throws {Error} If the payload is not 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.retail.v2beta.CompleteQueryResponse.CompletionResult;

                        /**
                         * Decodes a CompletionResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns CompletionResult
                         * @throws {Error} If the payload 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.retail.v2beta.CompleteQueryResponse.CompletionResult;

                        /**
                         * Verifies a CompletionResult message.
                         * @param message Plain 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 CompletionResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns CompletionResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.CompleteQueryResponse.CompletionResult;

                        /**
                         * Creates a plain object from a CompletionResult message. Also converts values to other types if specified.
                         * @param message CompletionResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.CompleteQueryResponse.CompletionResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this CompletionResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for CompletionResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a RecentSearchResult. */
                    interface IRecentSearchResult {

                        /** RecentSearchResult recentSearch */
                        recentSearch?: (string|null);
                    }

                    /** Represents a RecentSearchResult. */
                    class RecentSearchResult implements IRecentSearchResult {

                        /**
                         * Constructs a new RecentSearchResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.CompleteQueryResponse.IRecentSearchResult);

                        /** RecentSearchResult recentSearch. */
                        public recentSearch: string;

                        /**
                         * Creates a new RecentSearchResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RecentSearchResult instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.CompleteQueryResponse.IRecentSearchResult): google.cloud.retail.v2beta.CompleteQueryResponse.RecentSearchResult;

                        /**
                         * Encodes the specified RecentSearchResult message. Does not implicitly {@link google.cloud.retail.v2beta.CompleteQueryResponse.RecentSearchResult.verify|verify} messages.
                         * @param message RecentSearchResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.CompleteQueryResponse.IRecentSearchResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RecentSearchResult message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.CompleteQueryResponse.RecentSearchResult.verify|verify} messages.
                         * @param message RecentSearchResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.CompleteQueryResponse.IRecentSearchResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RecentSearchResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RecentSearchResult
                         * @throws {Error} If the payload is not 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.retail.v2beta.CompleteQueryResponse.RecentSearchResult;

                        /**
                         * Decodes a RecentSearchResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RecentSearchResult
                         * @throws {Error} If the payload 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.retail.v2beta.CompleteQueryResponse.RecentSearchResult;

                        /**
                         * Verifies a RecentSearchResult message.
                         * @param message Plain 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 RecentSearchResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RecentSearchResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.CompleteQueryResponse.RecentSearchResult;

                        /**
                         * Creates a plain object from a RecentSearchResult message. Also converts values to other types if specified.
                         * @param message RecentSearchResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.CompleteQueryResponse.RecentSearchResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RecentSearchResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RecentSearchResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of an AttributeResult. */
                    interface IAttributeResult {

                        /** AttributeResult suggestions */
                        suggestions?: (string[]|null);
                    }

                    /** Represents an AttributeResult. */
                    class AttributeResult implements IAttributeResult {

                        /**
                         * Constructs a new AttributeResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.CompleteQueryResponse.IAttributeResult);

                        /** AttributeResult suggestions. */
                        public suggestions: string[];

                        /**
                         * Creates a new AttributeResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AttributeResult instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.CompleteQueryResponse.IAttributeResult): google.cloud.retail.v2beta.CompleteQueryResponse.AttributeResult;

                        /**
                         * Encodes the specified AttributeResult message. Does not implicitly {@link google.cloud.retail.v2beta.CompleteQueryResponse.AttributeResult.verify|verify} messages.
                         * @param message AttributeResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.CompleteQueryResponse.IAttributeResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AttributeResult message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.CompleteQueryResponse.AttributeResult.verify|verify} messages.
                         * @param message AttributeResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.CompleteQueryResponse.IAttributeResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AttributeResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AttributeResult
                         * @throws {Error} If the payload is not 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.retail.v2beta.CompleteQueryResponse.AttributeResult;

                        /**
                         * Decodes an AttributeResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AttributeResult
                         * @throws {Error} If the payload 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.retail.v2beta.CompleteQueryResponse.AttributeResult;

                        /**
                         * Verifies an AttributeResult message.
                         * @param message Plain 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 AttributeResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AttributeResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.CompleteQueryResponse.AttributeResult;

                        /**
                         * Creates a plain object from an AttributeResult message. Also converts values to other types if specified.
                         * @param message AttributeResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.CompleteQueryResponse.AttributeResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AttributeResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AttributeResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of a Control. */
                interface IControl {

                    /** Control facetSpec */
                    facetSpec?: (google.cloud.retail.v2beta.SearchRequest.IFacetSpec|null);

                    /** Control rule */
                    rule?: (google.cloud.retail.v2beta.IRule|null);

                    /** Control name */
                    name?: (string|null);

                    /** Control displayName */
                    displayName?: (string|null);

                    /** Control associatedServingConfigIds */
                    associatedServingConfigIds?: (string[]|null);

                    /** Control solutionTypes */
                    solutionTypes?: (google.cloud.retail.v2beta.SolutionType[]|null);

                    /** Control searchSolutionUseCase */
                    searchSolutionUseCase?: (google.cloud.retail.v2beta.SearchSolutionUseCase[]|null);
                }

                /** Represents a Control. */
                class Control implements IControl {

                    /**
                     * Constructs a new Control.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IControl);

                    /** Control facetSpec. */
                    public facetSpec?: (google.cloud.retail.v2beta.SearchRequest.IFacetSpec|null);

                    /** Control rule. */
                    public rule?: (google.cloud.retail.v2beta.IRule|null);

                    /** Control name. */
                    public name: string;

                    /** Control displayName. */
                    public displayName: string;

                    /** Control associatedServingConfigIds. */
                    public associatedServingConfigIds: string[];

                    /** Control solutionTypes. */
                    public solutionTypes: google.cloud.retail.v2beta.SolutionType[];

                    /** Control searchSolutionUseCase. */
                    public searchSolutionUseCase: google.cloud.retail.v2beta.SearchSolutionUseCase[];

                    /** Control control. */
                    public control?: ("facetSpec"|"rule");

                    /**
                     * Creates a new Control instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Control instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IControl): google.cloud.retail.v2beta.Control;

                    /**
                     * Encodes the specified Control message. Does not implicitly {@link google.cloud.retail.v2beta.Control.verify|verify} messages.
                     * @param message Control message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IControl, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Control message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.Control.verify|verify} messages.
                     * @param message Control message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IControl, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Control message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Control
                     * @throws {Error} If the payload is not 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.retail.v2beta.Control;

                    /**
                     * Decodes a Control message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Control
                     * @throws {Error} If the payload 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.retail.v2beta.Control;

                    /**
                     * Verifies a Control message.
                     * @param message Plain 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 Control message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Control
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.Control;

                    /**
                     * Creates a plain object from a Control message. Also converts values to other types if specified.
                     * @param message Control
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.Control, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Control to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Control
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Represents a SearchService */
                class SearchService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new SearchService 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 SearchService 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): SearchService;

                    /**
                     * Calls Search.
                     * @param request SearchRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and SearchResponse
                     */
                    public search(request: google.cloud.retail.v2beta.ISearchRequest, callback: google.cloud.retail.v2beta.SearchService.SearchCallback): void;

                    /**
                     * Calls Search.
                     * @param request SearchRequest message or plain object
                     * @returns Promise
                     */
                    public search(request: google.cloud.retail.v2beta.ISearchRequest): Promise<google.cloud.retail.v2beta.SearchResponse>;
                }

                namespace SearchService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.SearchService|search}.
                     * @param error Error, if any
                     * @param [response] SearchResponse
                     */
                    type SearchCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.SearchResponse) => void;
                }

                /** Properties of a ProductAttributeValue. */
                interface IProductAttributeValue {

                    /** ProductAttributeValue name */
                    name?: (string|null);

                    /** ProductAttributeValue value */
                    value?: (string|null);
                }

                /** Represents a ProductAttributeValue. */
                class ProductAttributeValue implements IProductAttributeValue {

                    /**
                     * Constructs a new ProductAttributeValue.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IProductAttributeValue);

                    /** ProductAttributeValue name. */
                    public name: string;

                    /** ProductAttributeValue value. */
                    public value: string;

                    /**
                     * Creates a new ProductAttributeValue instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ProductAttributeValue instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IProductAttributeValue): google.cloud.retail.v2beta.ProductAttributeValue;

                    /**
                     * Encodes the specified ProductAttributeValue message. Does not implicitly {@link google.cloud.retail.v2beta.ProductAttributeValue.verify|verify} messages.
                     * @param message ProductAttributeValue message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IProductAttributeValue, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ProductAttributeValue message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ProductAttributeValue.verify|verify} messages.
                     * @param message ProductAttributeValue message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IProductAttributeValue, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ProductAttributeValue message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ProductAttributeValue
                     * @throws {Error} If the payload is not 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.retail.v2beta.ProductAttributeValue;

                    /**
                     * Decodes a ProductAttributeValue message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ProductAttributeValue
                     * @throws {Error} If the payload 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.retail.v2beta.ProductAttributeValue;

                    /**
                     * Verifies a ProductAttributeValue message.
                     * @param message Plain 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 ProductAttributeValue message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ProductAttributeValue
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ProductAttributeValue;

                    /**
                     * Creates a plain object from a ProductAttributeValue message. Also converts values to other types if specified.
                     * @param message ProductAttributeValue
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ProductAttributeValue, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ProductAttributeValue to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ProductAttributeValue
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ProductAttributeInterval. */
                interface IProductAttributeInterval {

                    /** ProductAttributeInterval name */
                    name?: (string|null);

                    /** ProductAttributeInterval interval */
                    interval?: (google.cloud.retail.v2beta.IInterval|null);
                }

                /** Represents a ProductAttributeInterval. */
                class ProductAttributeInterval implements IProductAttributeInterval {

                    /**
                     * Constructs a new ProductAttributeInterval.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IProductAttributeInterval);

                    /** ProductAttributeInterval name. */
                    public name: string;

                    /** ProductAttributeInterval interval. */
                    public interval?: (google.cloud.retail.v2beta.IInterval|null);

                    /**
                     * Creates a new ProductAttributeInterval instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ProductAttributeInterval instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IProductAttributeInterval): google.cloud.retail.v2beta.ProductAttributeInterval;

                    /**
                     * Encodes the specified ProductAttributeInterval message. Does not implicitly {@link google.cloud.retail.v2beta.ProductAttributeInterval.verify|verify} messages.
                     * @param message ProductAttributeInterval message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IProductAttributeInterval, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ProductAttributeInterval message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ProductAttributeInterval.verify|verify} messages.
                     * @param message ProductAttributeInterval message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IProductAttributeInterval, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ProductAttributeInterval message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ProductAttributeInterval
                     * @throws {Error} If the payload is not 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.retail.v2beta.ProductAttributeInterval;

                    /**
                     * Decodes a ProductAttributeInterval message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ProductAttributeInterval
                     * @throws {Error} If the payload 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.retail.v2beta.ProductAttributeInterval;

                    /**
                     * Verifies a ProductAttributeInterval message.
                     * @param message Plain 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 ProductAttributeInterval message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ProductAttributeInterval
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ProductAttributeInterval;

                    /**
                     * Creates a plain object from a ProductAttributeInterval message. Also converts values to other types if specified.
                     * @param message ProductAttributeInterval
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ProductAttributeInterval, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ProductAttributeInterval to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ProductAttributeInterval
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a Tile. */
                interface ITile {

                    /** Tile productAttributeValue */
                    productAttributeValue?: (google.cloud.retail.v2beta.IProductAttributeValue|null);

                    /** Tile productAttributeInterval */
                    productAttributeInterval?: (google.cloud.retail.v2beta.IProductAttributeInterval|null);

                    /** Tile representativeProductId */
                    representativeProductId?: (string|null);
                }

                /** Represents a Tile. */
                class Tile implements ITile {

                    /**
                     * Constructs a new Tile.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.ITile);

                    /** Tile productAttributeValue. */
                    public productAttributeValue?: (google.cloud.retail.v2beta.IProductAttributeValue|null);

                    /** Tile productAttributeInterval. */
                    public productAttributeInterval?: (google.cloud.retail.v2beta.IProductAttributeInterval|null);

                    /** Tile representativeProductId. */
                    public representativeProductId: string;

                    /** Tile productAttribute. */
                    public productAttribute?: ("productAttributeValue"|"productAttributeInterval");

                    /**
                     * Creates a new Tile instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Tile instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.ITile): google.cloud.retail.v2beta.Tile;

                    /**
                     * Encodes the specified Tile message. Does not implicitly {@link google.cloud.retail.v2beta.Tile.verify|verify} messages.
                     * @param message Tile message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.ITile, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Tile message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.Tile.verify|verify} messages.
                     * @param message Tile message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.ITile, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Tile message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Tile
                     * @throws {Error} If the payload is not 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.retail.v2beta.Tile;

                    /**
                     * Decodes a Tile message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Tile
                     * @throws {Error} If the payload 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.retail.v2beta.Tile;

                    /**
                     * Verifies a Tile message.
                     * @param message Plain 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 Tile message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Tile
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.Tile;

                    /**
                     * Creates a plain object from a Tile message. Also converts values to other types if specified.
                     * @param message Tile
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.Tile, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Tile to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Tile
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SearchRequest. */
                interface ISearchRequest {

                    /** SearchRequest placement */
                    placement?: (string|null);

                    /** SearchRequest branch */
                    branch?: (string|null);

                    /** SearchRequest query */
                    query?: (string|null);

                    /** SearchRequest visitorId */
                    visitorId?: (string|null);

                    /** SearchRequest userInfo */
                    userInfo?: (google.cloud.retail.v2beta.IUserInfo|null);

                    /** SearchRequest pageSize */
                    pageSize?: (number|null);

                    /** SearchRequest pageToken */
                    pageToken?: (string|null);

                    /** SearchRequest offset */
                    offset?: (number|null);

                    /** SearchRequest filter */
                    filter?: (string|null);

                    /** SearchRequest canonicalFilter */
                    canonicalFilter?: (string|null);

                    /** SearchRequest orderBy */
                    orderBy?: (string|null);

                    /** SearchRequest facetSpecs */
                    facetSpecs?: (google.cloud.retail.v2beta.SearchRequest.IFacetSpec[]|null);

                    /** SearchRequest dynamicFacetSpec */
                    dynamicFacetSpec?: (google.cloud.retail.v2beta.SearchRequest.IDynamicFacetSpec|null);

                    /** SearchRequest boostSpec */
                    boostSpec?: (google.cloud.retail.v2beta.SearchRequest.IBoostSpec|null);

                    /** SearchRequest queryExpansionSpec */
                    queryExpansionSpec?: (google.cloud.retail.v2beta.SearchRequest.IQueryExpansionSpec|null);

                    /** SearchRequest variantRollupKeys */
                    variantRollupKeys?: (string[]|null);

                    /** SearchRequest pageCategories */
                    pageCategories?: (string[]|null);

                    /** SearchRequest searchMode */
                    searchMode?: (google.cloud.retail.v2beta.SearchRequest.SearchMode|keyof typeof google.cloud.retail.v2beta.SearchRequest.SearchMode|null);

                    /** SearchRequest personalizationSpec */
                    personalizationSpec?: (google.cloud.retail.v2beta.SearchRequest.IPersonalizationSpec|null);

                    /** SearchRequest labels */
                    labels?: ({ [k: string]: string }|null);

                    /** SearchRequest spellCorrectionSpec */
                    spellCorrectionSpec?: (google.cloud.retail.v2beta.SearchRequest.ISpellCorrectionSpec|null);

                    /** SearchRequest entity */
                    entity?: (string|null);

                    /** SearchRequest conversationalSearchSpec */
                    conversationalSearchSpec?: (google.cloud.retail.v2beta.SearchRequest.IConversationalSearchSpec|null);

                    /** SearchRequest tileNavigationSpec */
                    tileNavigationSpec?: (google.cloud.retail.v2beta.SearchRequest.ITileNavigationSpec|null);

                    /** SearchRequest languageCode */
                    languageCode?: (string|null);

                    /** SearchRequest regionCode */
                    regionCode?: (string|null);

                    /** SearchRequest placeId */
                    placeId?: (string|null);

                    /** SearchRequest userAttributes */
                    userAttributes?: ({ [k: string]: google.cloud.retail.v2beta.IStringList }|null);
                }

                /** Represents a SearchRequest. */
                class SearchRequest implements ISearchRequest {

                    /**
                     * Constructs a new SearchRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.ISearchRequest);

                    /** SearchRequest placement. */
                    public placement: string;

                    /** SearchRequest branch. */
                    public branch: string;

                    /** SearchRequest query. */
                    public query: string;

                    /** SearchRequest visitorId. */
                    public visitorId: string;

                    /** SearchRequest userInfo. */
                    public userInfo?: (google.cloud.retail.v2beta.IUserInfo|null);

                    /** SearchRequest pageSize. */
                    public pageSize: number;

                    /** SearchRequest pageToken. */
                    public pageToken: string;

                    /** SearchRequest offset. */
                    public offset: number;

                    /** SearchRequest filter. */
                    public filter: string;

                    /** SearchRequest canonicalFilter. */
                    public canonicalFilter: string;

                    /** SearchRequest orderBy. */
                    public orderBy: string;

                    /** SearchRequest facetSpecs. */
                    public facetSpecs: google.cloud.retail.v2beta.SearchRequest.IFacetSpec[];

                    /** SearchRequest dynamicFacetSpec. */
                    public dynamicFacetSpec?: (google.cloud.retail.v2beta.SearchRequest.IDynamicFacetSpec|null);

                    /** SearchRequest boostSpec. */
                    public boostSpec?: (google.cloud.retail.v2beta.SearchRequest.IBoostSpec|null);

                    /** SearchRequest queryExpansionSpec. */
                    public queryExpansionSpec?: (google.cloud.retail.v2beta.SearchRequest.IQueryExpansionSpec|null);

                    /** SearchRequest variantRollupKeys. */
                    public variantRollupKeys: string[];

                    /** SearchRequest pageCategories. */
                    public pageCategories: string[];

                    /** SearchRequest searchMode. */
                    public searchMode: (google.cloud.retail.v2beta.SearchRequest.SearchMode|keyof typeof google.cloud.retail.v2beta.SearchRequest.SearchMode);

                    /** SearchRequest personalizationSpec. */
                    public personalizationSpec?: (google.cloud.retail.v2beta.SearchRequest.IPersonalizationSpec|null);

                    /** SearchRequest labels. */
                    public labels: { [k: string]: string };

                    /** SearchRequest spellCorrectionSpec. */
                    public spellCorrectionSpec?: (google.cloud.retail.v2beta.SearchRequest.ISpellCorrectionSpec|null);

                    /** SearchRequest entity. */
                    public entity: string;

                    /** SearchRequest conversationalSearchSpec. */
                    public conversationalSearchSpec?: (google.cloud.retail.v2beta.SearchRequest.IConversationalSearchSpec|null);

                    /** SearchRequest tileNavigationSpec. */
                    public tileNavigationSpec?: (google.cloud.retail.v2beta.SearchRequest.ITileNavigationSpec|null);

                    /** SearchRequest languageCode. */
                    public languageCode: string;

                    /** SearchRequest regionCode. */
                    public regionCode: string;

                    /** SearchRequest placeId. */
                    public placeId: string;

                    /** SearchRequest userAttributes. */
                    public userAttributes: { [k: string]: google.cloud.retail.v2beta.IStringList };

                    /**
                     * Creates a new SearchRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SearchRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.ISearchRequest): google.cloud.retail.v2beta.SearchRequest;

                    /**
                     * Encodes the specified SearchRequest message. Does not implicitly {@link google.cloud.retail.v2beta.SearchRequest.verify|verify} messages.
                     * @param message SearchRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.ISearchRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SearchRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.SearchRequest.verify|verify} messages.
                     * @param message SearchRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.ISearchRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SearchRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SearchRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.SearchRequest;

                    /**
                     * Decodes a SearchRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SearchRequest
                     * @throws {Error} If the payload 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.retail.v2beta.SearchRequest;

                    /**
                     * Verifies a SearchRequest message.
                     * @param message Plain 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 SearchRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SearchRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.SearchRequest;

                    /**
                     * Creates a plain object from a SearchRequest message. Also converts values to other types if specified.
                     * @param message SearchRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.SearchRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SearchRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SearchRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace SearchRequest {

                    /** Properties of a FacetSpec. */
                    interface IFacetSpec {

                        /** FacetSpec facetKey */
                        facetKey?: (google.cloud.retail.v2beta.SearchRequest.FacetSpec.IFacetKey|null);

                        /** FacetSpec limit */
                        limit?: (number|null);

                        /** FacetSpec excludedFilterKeys */
                        excludedFilterKeys?: (string[]|null);

                        /** FacetSpec enableDynamicPosition */
                        enableDynamicPosition?: (boolean|null);
                    }

                    /** Represents a FacetSpec. */
                    class FacetSpec implements IFacetSpec {

                        /**
                         * Constructs a new FacetSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.SearchRequest.IFacetSpec);

                        /** FacetSpec facetKey. */
                        public facetKey?: (google.cloud.retail.v2beta.SearchRequest.FacetSpec.IFacetKey|null);

                        /** FacetSpec limit. */
                        public limit: number;

                        /** FacetSpec excludedFilterKeys. */
                        public excludedFilterKeys: string[];

                        /** FacetSpec enableDynamicPosition. */
                        public enableDynamicPosition: boolean;

                        /**
                         * Creates a new FacetSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FacetSpec instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.SearchRequest.IFacetSpec): google.cloud.retail.v2beta.SearchRequest.FacetSpec;

                        /**
                         * Encodes the specified FacetSpec message. Does not implicitly {@link google.cloud.retail.v2beta.SearchRequest.FacetSpec.verify|verify} messages.
                         * @param message FacetSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.SearchRequest.IFacetSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FacetSpec message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.SearchRequest.FacetSpec.verify|verify} messages.
                         * @param message FacetSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.SearchRequest.IFacetSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FacetSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FacetSpec
                         * @throws {Error} If the payload is not 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.retail.v2beta.SearchRequest.FacetSpec;

                        /**
                         * Decodes a FacetSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FacetSpec
                         * @throws {Error} If the payload 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.retail.v2beta.SearchRequest.FacetSpec;

                        /**
                         * Verifies a FacetSpec message.
                         * @param message Plain 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 FacetSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FacetSpec
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.SearchRequest.FacetSpec;

                        /**
                         * Creates a plain object from a FacetSpec message. Also converts values to other types if specified.
                         * @param message FacetSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.SearchRequest.FacetSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FacetSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FacetSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace FacetSpec {

                        /** Properties of a FacetKey. */
                        interface IFacetKey {

                            /** FacetKey key */
                            key?: (string|null);

                            /** FacetKey intervals */
                            intervals?: (google.cloud.retail.v2beta.IInterval[]|null);

                            /** FacetKey restrictedValues */
                            restrictedValues?: (string[]|null);

                            /** FacetKey prefixes */
                            prefixes?: (string[]|null);

                            /** FacetKey contains */
                            contains?: (string[]|null);

                            /** FacetKey caseInsensitive */
                            caseInsensitive?: (boolean|null);

                            /** FacetKey orderBy */
                            orderBy?: (string|null);

                            /** FacetKey query */
                            query?: (string|null);

                            /** FacetKey returnMinMax */
                            returnMinMax?: (boolean|null);
                        }

                        /** Represents a FacetKey. */
                        class FacetKey implements IFacetKey {

                            /**
                             * Constructs a new FacetKey.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2beta.SearchRequest.FacetSpec.IFacetKey);

                            /** FacetKey key. */
                            public key: string;

                            /** FacetKey intervals. */
                            public intervals: google.cloud.retail.v2beta.IInterval[];

                            /** FacetKey restrictedValues. */
                            public restrictedValues: string[];

                            /** FacetKey prefixes. */
                            public prefixes: string[];

                            /** FacetKey contains. */
                            public contains: string[];

                            /** FacetKey caseInsensitive. */
                            public caseInsensitive: boolean;

                            /** FacetKey orderBy. */
                            public orderBy: string;

                            /** FacetKey query. */
                            public query: string;

                            /** FacetKey returnMinMax. */
                            public returnMinMax: boolean;

                            /**
                             * Creates a new FacetKey instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns FacetKey instance
                             */
                            public static create(properties?: google.cloud.retail.v2beta.SearchRequest.FacetSpec.IFacetKey): google.cloud.retail.v2beta.SearchRequest.FacetSpec.FacetKey;

                            /**
                             * Encodes the specified FacetKey message. Does not implicitly {@link google.cloud.retail.v2beta.SearchRequest.FacetSpec.FacetKey.verify|verify} messages.
                             * @param message FacetKey message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.retail.v2beta.SearchRequest.FacetSpec.IFacetKey, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified FacetKey message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.SearchRequest.FacetSpec.FacetKey.verify|verify} messages.
                             * @param message FacetKey message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.retail.v2beta.SearchRequest.FacetSpec.IFacetKey, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a FacetKey message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns FacetKey
                             * @throws {Error} If the payload is not 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.retail.v2beta.SearchRequest.FacetSpec.FacetKey;

                            /**
                             * Decodes a FacetKey message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns FacetKey
                             * @throws {Error} If the payload 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.retail.v2beta.SearchRequest.FacetSpec.FacetKey;

                            /**
                             * Verifies a FacetKey message.
                             * @param message Plain 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 FacetKey message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns FacetKey
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.SearchRequest.FacetSpec.FacetKey;

                            /**
                             * Creates a plain object from a FacetKey message. Also converts values to other types if specified.
                             * @param message FacetKey
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.retail.v2beta.SearchRequest.FacetSpec.FacetKey, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this FacetKey to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for FacetKey
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a DynamicFacetSpec. */
                    interface IDynamicFacetSpec {

                        /** DynamicFacetSpec mode */
                        mode?: (google.cloud.retail.v2beta.SearchRequest.DynamicFacetSpec.Mode|keyof typeof google.cloud.retail.v2beta.SearchRequest.DynamicFacetSpec.Mode|null);
                    }

                    /** Represents a DynamicFacetSpec. */
                    class DynamicFacetSpec implements IDynamicFacetSpec {

                        /**
                         * Constructs a new DynamicFacetSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.SearchRequest.IDynamicFacetSpec);

                        /** DynamicFacetSpec mode. */
                        public mode: (google.cloud.retail.v2beta.SearchRequest.DynamicFacetSpec.Mode|keyof typeof google.cloud.retail.v2beta.SearchRequest.DynamicFacetSpec.Mode);

                        /**
                         * Creates a new DynamicFacetSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns DynamicFacetSpec instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.SearchRequest.IDynamicFacetSpec): google.cloud.retail.v2beta.SearchRequest.DynamicFacetSpec;

                        /**
                         * Encodes the specified DynamicFacetSpec message. Does not implicitly {@link google.cloud.retail.v2beta.SearchRequest.DynamicFacetSpec.verify|verify} messages.
                         * @param message DynamicFacetSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.SearchRequest.IDynamicFacetSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified DynamicFacetSpec message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.SearchRequest.DynamicFacetSpec.verify|verify} messages.
                         * @param message DynamicFacetSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.SearchRequest.IDynamicFacetSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a DynamicFacetSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns DynamicFacetSpec
                         * @throws {Error} If the payload is not 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.retail.v2beta.SearchRequest.DynamicFacetSpec;

                        /**
                         * Decodes a DynamicFacetSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns DynamicFacetSpec
                         * @throws {Error} If the payload 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.retail.v2beta.SearchRequest.DynamicFacetSpec;

                        /**
                         * Verifies a DynamicFacetSpec message.
                         * @param message Plain 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 DynamicFacetSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns DynamicFacetSpec
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.SearchRequest.DynamicFacetSpec;

                        /**
                         * Creates a plain object from a DynamicFacetSpec message. Also converts values to other types if specified.
                         * @param message DynamicFacetSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.SearchRequest.DynamicFacetSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this DynamicFacetSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for DynamicFacetSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace DynamicFacetSpec {

                        /** Mode enum. */
                        enum Mode {
                            MODE_UNSPECIFIED = 0,
                            DISABLED = 1,
                            ENABLED = 2
                        }
                    }

                    /** Properties of a BoostSpec. */
                    interface IBoostSpec {

                        /** BoostSpec conditionBoostSpecs */
                        conditionBoostSpecs?: (google.cloud.retail.v2beta.SearchRequest.BoostSpec.IConditionBoostSpec[]|null);

                        /** BoostSpec skipBoostSpecValidation */
                        skipBoostSpecValidation?: (boolean|null);
                    }

                    /** Represents a BoostSpec. */
                    class BoostSpec implements IBoostSpec {

                        /**
                         * Constructs a new BoostSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.SearchRequest.IBoostSpec);

                        /** BoostSpec conditionBoostSpecs. */
                        public conditionBoostSpecs: google.cloud.retail.v2beta.SearchRequest.BoostSpec.IConditionBoostSpec[];

                        /** BoostSpec skipBoostSpecValidation. */
                        public skipBoostSpecValidation?: (boolean|null);

                        /**
                         * Creates a new BoostSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns BoostSpec instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.SearchRequest.IBoostSpec): google.cloud.retail.v2beta.SearchRequest.BoostSpec;

                        /**
                         * Encodes the specified BoostSpec message. Does not implicitly {@link google.cloud.retail.v2beta.SearchRequest.BoostSpec.verify|verify} messages.
                         * @param message BoostSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.SearchRequest.IBoostSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified BoostSpec message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.SearchRequest.BoostSpec.verify|verify} messages.
                         * @param message BoostSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.SearchRequest.IBoostSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a BoostSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns BoostSpec
                         * @throws {Error} If the payload is not 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.retail.v2beta.SearchRequest.BoostSpec;

                        /**
                         * Decodes a BoostSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns BoostSpec
                         * @throws {Error} If the payload 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.retail.v2beta.SearchRequest.BoostSpec;

                        /**
                         * Verifies a BoostSpec message.
                         * @param message Plain 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 BoostSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns BoostSpec
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.SearchRequest.BoostSpec;

                        /**
                         * Creates a plain object from a BoostSpec message. Also converts values to other types if specified.
                         * @param message BoostSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.SearchRequest.BoostSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this BoostSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for BoostSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace BoostSpec {

                        /** Properties of a ConditionBoostSpec. */
                        interface IConditionBoostSpec {

                            /** ConditionBoostSpec condition */
                            condition?: (string|null);

                            /** ConditionBoostSpec boost */
                            boost?: (number|null);
                        }

                        /** Represents a ConditionBoostSpec. */
                        class ConditionBoostSpec implements IConditionBoostSpec {

                            /**
                             * Constructs a new ConditionBoostSpec.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2beta.SearchRequest.BoostSpec.IConditionBoostSpec);

                            /** ConditionBoostSpec condition. */
                            public condition: string;

                            /** ConditionBoostSpec boost. */
                            public boost: number;

                            /**
                             * Creates a new ConditionBoostSpec instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns ConditionBoostSpec instance
                             */
                            public static create(properties?: google.cloud.retail.v2beta.SearchRequest.BoostSpec.IConditionBoostSpec): google.cloud.retail.v2beta.SearchRequest.BoostSpec.ConditionBoostSpec;

                            /**
                             * Encodes the specified ConditionBoostSpec message. Does not implicitly {@link google.cloud.retail.v2beta.SearchRequest.BoostSpec.ConditionBoostSpec.verify|verify} messages.
                             * @param message ConditionBoostSpec message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.retail.v2beta.SearchRequest.BoostSpec.IConditionBoostSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified ConditionBoostSpec message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.SearchRequest.BoostSpec.ConditionBoostSpec.verify|verify} messages.
                             * @param message ConditionBoostSpec message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.retail.v2beta.SearchRequest.BoostSpec.IConditionBoostSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a ConditionBoostSpec message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns ConditionBoostSpec
                             * @throws {Error} If the payload is not 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.retail.v2beta.SearchRequest.BoostSpec.ConditionBoostSpec;

                            /**
                             * Decodes a ConditionBoostSpec message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns ConditionBoostSpec
                             * @throws {Error} If the payload 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.retail.v2beta.SearchRequest.BoostSpec.ConditionBoostSpec;

                            /**
                             * Verifies a ConditionBoostSpec message.
                             * @param message Plain 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 ConditionBoostSpec message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns ConditionBoostSpec
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.SearchRequest.BoostSpec.ConditionBoostSpec;

                            /**
                             * Creates a plain object from a ConditionBoostSpec message. Also converts values to other types if specified.
                             * @param message ConditionBoostSpec
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.retail.v2beta.SearchRequest.BoostSpec.ConditionBoostSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this ConditionBoostSpec to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for ConditionBoostSpec
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a QueryExpansionSpec. */
                    interface IQueryExpansionSpec {

                        /** QueryExpansionSpec condition */
                        condition?: (google.cloud.retail.v2beta.SearchRequest.QueryExpansionSpec.Condition|keyof typeof google.cloud.retail.v2beta.SearchRequest.QueryExpansionSpec.Condition|null);

                        /** QueryExpansionSpec pinUnexpandedResults */
                        pinUnexpandedResults?: (boolean|null);
                    }

                    /** Represents a QueryExpansionSpec. */
                    class QueryExpansionSpec implements IQueryExpansionSpec {

                        /**
                         * Constructs a new QueryExpansionSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.SearchRequest.IQueryExpansionSpec);

                        /** QueryExpansionSpec condition. */
                        public condition: (google.cloud.retail.v2beta.SearchRequest.QueryExpansionSpec.Condition|keyof typeof google.cloud.retail.v2beta.SearchRequest.QueryExpansionSpec.Condition);

                        /** QueryExpansionSpec pinUnexpandedResults. */
                        public pinUnexpandedResults: boolean;

                        /**
                         * Creates a new QueryExpansionSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns QueryExpansionSpec instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.SearchRequest.IQueryExpansionSpec): google.cloud.retail.v2beta.SearchRequest.QueryExpansionSpec;

                        /**
                         * Encodes the specified QueryExpansionSpec message. Does not implicitly {@link google.cloud.retail.v2beta.SearchRequest.QueryExpansionSpec.verify|verify} messages.
                         * @param message QueryExpansionSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.SearchRequest.IQueryExpansionSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified QueryExpansionSpec message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.SearchRequest.QueryExpansionSpec.verify|verify} messages.
                         * @param message QueryExpansionSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.SearchRequest.IQueryExpansionSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a QueryExpansionSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns QueryExpansionSpec
                         * @throws {Error} If the payload is not 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.retail.v2beta.SearchRequest.QueryExpansionSpec;

                        /**
                         * Decodes a QueryExpansionSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns QueryExpansionSpec
                         * @throws {Error} If the payload 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.retail.v2beta.SearchRequest.QueryExpansionSpec;

                        /**
                         * Verifies a QueryExpansionSpec message.
                         * @param message Plain 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 QueryExpansionSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns QueryExpansionSpec
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.SearchRequest.QueryExpansionSpec;

                        /**
                         * Creates a plain object from a QueryExpansionSpec message. Also converts values to other types if specified.
                         * @param message QueryExpansionSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.SearchRequest.QueryExpansionSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this QueryExpansionSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for QueryExpansionSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace QueryExpansionSpec {

                        /** Condition enum. */
                        enum Condition {
                            CONDITION_UNSPECIFIED = 0,
                            DISABLED = 1,
                            AUTO = 3
                        }
                    }

                    /** Properties of a PersonalizationSpec. */
                    interface IPersonalizationSpec {

                        /** PersonalizationSpec mode */
                        mode?: (google.cloud.retail.v2beta.SearchRequest.PersonalizationSpec.Mode|keyof typeof google.cloud.retail.v2beta.SearchRequest.PersonalizationSpec.Mode|null);
                    }

                    /** Represents a PersonalizationSpec. */
                    class PersonalizationSpec implements IPersonalizationSpec {

                        /**
                         * Constructs a new PersonalizationSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.SearchRequest.IPersonalizationSpec);

                        /** PersonalizationSpec mode. */
                        public mode: (google.cloud.retail.v2beta.SearchRequest.PersonalizationSpec.Mode|keyof typeof google.cloud.retail.v2beta.SearchRequest.PersonalizationSpec.Mode);

                        /**
                         * Creates a new PersonalizationSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PersonalizationSpec instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.SearchRequest.IPersonalizationSpec): google.cloud.retail.v2beta.SearchRequest.PersonalizationSpec;

                        /**
                         * Encodes the specified PersonalizationSpec message. Does not implicitly {@link google.cloud.retail.v2beta.SearchRequest.PersonalizationSpec.verify|verify} messages.
                         * @param message PersonalizationSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.SearchRequest.IPersonalizationSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PersonalizationSpec message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.SearchRequest.PersonalizationSpec.verify|verify} messages.
                         * @param message PersonalizationSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.SearchRequest.IPersonalizationSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PersonalizationSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PersonalizationSpec
                         * @throws {Error} If the payload is not 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.retail.v2beta.SearchRequest.PersonalizationSpec;

                        /**
                         * Decodes a PersonalizationSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PersonalizationSpec
                         * @throws {Error} If the payload 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.retail.v2beta.SearchRequest.PersonalizationSpec;

                        /**
                         * Verifies a PersonalizationSpec message.
                         * @param message Plain 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 PersonalizationSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PersonalizationSpec
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.SearchRequest.PersonalizationSpec;

                        /**
                         * Creates a plain object from a PersonalizationSpec message. Also converts values to other types if specified.
                         * @param message PersonalizationSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.SearchRequest.PersonalizationSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PersonalizationSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PersonalizationSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace PersonalizationSpec {

                        /** Mode enum. */
                        enum Mode {
                            MODE_UNSPECIFIED = 0,
                            AUTO = 1,
                            DISABLED = 2
                        }
                    }

                    /** Properties of a SpellCorrectionSpec. */
                    interface ISpellCorrectionSpec {

                        /** SpellCorrectionSpec mode */
                        mode?: (google.cloud.retail.v2beta.SearchRequest.SpellCorrectionSpec.Mode|keyof typeof google.cloud.retail.v2beta.SearchRequest.SpellCorrectionSpec.Mode|null);
                    }

                    /** Represents a SpellCorrectionSpec. */
                    class SpellCorrectionSpec implements ISpellCorrectionSpec {

                        /**
                         * Constructs a new SpellCorrectionSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.SearchRequest.ISpellCorrectionSpec);

                        /** SpellCorrectionSpec mode. */
                        public mode: (google.cloud.retail.v2beta.SearchRequest.SpellCorrectionSpec.Mode|keyof typeof google.cloud.retail.v2beta.SearchRequest.SpellCorrectionSpec.Mode);

                        /**
                         * Creates a new SpellCorrectionSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SpellCorrectionSpec instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.SearchRequest.ISpellCorrectionSpec): google.cloud.retail.v2beta.SearchRequest.SpellCorrectionSpec;

                        /**
                         * Encodes the specified SpellCorrectionSpec message. Does not implicitly {@link google.cloud.retail.v2beta.SearchRequest.SpellCorrectionSpec.verify|verify} messages.
                         * @param message SpellCorrectionSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.SearchRequest.ISpellCorrectionSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SpellCorrectionSpec message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.SearchRequest.SpellCorrectionSpec.verify|verify} messages.
                         * @param message SpellCorrectionSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.SearchRequest.ISpellCorrectionSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SpellCorrectionSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SpellCorrectionSpec
                         * @throws {Error} If the payload is not 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.retail.v2beta.SearchRequest.SpellCorrectionSpec;

                        /**
                         * Decodes a SpellCorrectionSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SpellCorrectionSpec
                         * @throws {Error} If the payload 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.retail.v2beta.SearchRequest.SpellCorrectionSpec;

                        /**
                         * Verifies a SpellCorrectionSpec message.
                         * @param message Plain 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 SpellCorrectionSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SpellCorrectionSpec
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.SearchRequest.SpellCorrectionSpec;

                        /**
                         * Creates a plain object from a SpellCorrectionSpec message. Also converts values to other types if specified.
                         * @param message SpellCorrectionSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.SearchRequest.SpellCorrectionSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SpellCorrectionSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SpellCorrectionSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace SpellCorrectionSpec {

                        /** Mode enum. */
                        enum Mode {
                            MODE_UNSPECIFIED = 0,
                            SUGGESTION_ONLY = 1,
                            AUTO = 2
                        }
                    }

                    /** Properties of a ConversationalSearchSpec. */
                    interface IConversationalSearchSpec {

                        /** ConversationalSearchSpec followupConversationRequested */
                        followupConversationRequested?: (boolean|null);

                        /** ConversationalSearchSpec conversationId */
                        conversationId?: (string|null);

                        /** ConversationalSearchSpec userAnswer */
                        userAnswer?: (google.cloud.retail.v2beta.SearchRequest.ConversationalSearchSpec.IUserAnswer|null);
                    }

                    /** Represents a ConversationalSearchSpec. */
                    class ConversationalSearchSpec implements IConversationalSearchSpec {

                        /**
                         * Constructs a new ConversationalSearchSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.SearchRequest.IConversationalSearchSpec);

                        /** ConversationalSearchSpec followupConversationRequested. */
                        public followupConversationRequested: boolean;

                        /** ConversationalSearchSpec conversationId. */
                        public conversationId: string;

                        /** ConversationalSearchSpec userAnswer. */
                        public userAnswer?: (google.cloud.retail.v2beta.SearchRequest.ConversationalSearchSpec.IUserAnswer|null);

                        /**
                         * Creates a new ConversationalSearchSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversationalSearchSpec instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.SearchRequest.IConversationalSearchSpec): google.cloud.retail.v2beta.SearchRequest.ConversationalSearchSpec;

                        /**
                         * Encodes the specified ConversationalSearchSpec message. Does not implicitly {@link google.cloud.retail.v2beta.SearchRequest.ConversationalSearchSpec.verify|verify} messages.
                         * @param message ConversationalSearchSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.SearchRequest.IConversationalSearchSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversationalSearchSpec message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.SearchRequest.ConversationalSearchSpec.verify|verify} messages.
                         * @param message ConversationalSearchSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.SearchRequest.IConversationalSearchSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversationalSearchSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversationalSearchSpec
                         * @throws {Error} If the payload is not 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.retail.v2beta.SearchRequest.ConversationalSearchSpec;

                        /**
                         * Decodes a ConversationalSearchSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversationalSearchSpec
                         * @throws {Error} If the payload 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.retail.v2beta.SearchRequest.ConversationalSearchSpec;

                        /**
                         * Verifies a ConversationalSearchSpec message.
                         * @param message Plain 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 ConversationalSearchSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversationalSearchSpec
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.SearchRequest.ConversationalSearchSpec;

                        /**
                         * Creates a plain object from a ConversationalSearchSpec message. Also converts values to other types if specified.
                         * @param message ConversationalSearchSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.SearchRequest.ConversationalSearchSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversationalSearchSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversationalSearchSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ConversationalSearchSpec {

                        /** Properties of a UserAnswer. */
                        interface IUserAnswer {

                            /** UserAnswer textAnswer */
                            textAnswer?: (string|null);

                            /** UserAnswer selectedAnswer */
                            selectedAnswer?: (google.cloud.retail.v2beta.SearchRequest.ConversationalSearchSpec.UserAnswer.ISelectedAnswer|null);
                        }

                        /** Represents a UserAnswer. */
                        class UserAnswer implements IUserAnswer {

                            /**
                             * Constructs a new UserAnswer.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2beta.SearchRequest.ConversationalSearchSpec.IUserAnswer);

                            /** UserAnswer textAnswer. */
                            public textAnswer?: (string|null);

                            /** UserAnswer selectedAnswer. */
                            public selectedAnswer?: (google.cloud.retail.v2beta.SearchRequest.ConversationalSearchSpec.UserAnswer.ISelectedAnswer|null);

                            /** UserAnswer type. */
                            public type?: ("textAnswer"|"selectedAnswer");

                            /**
                             * Creates a new UserAnswer instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns UserAnswer instance
                             */
                            public static create(properties?: google.cloud.retail.v2beta.SearchRequest.ConversationalSearchSpec.IUserAnswer): google.cloud.retail.v2beta.SearchRequest.ConversationalSearchSpec.UserAnswer;

                            /**
                             * Encodes the specified UserAnswer message. Does not implicitly {@link google.cloud.retail.v2beta.SearchRequest.ConversationalSearchSpec.UserAnswer.verify|verify} messages.
                             * @param message UserAnswer message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.retail.v2beta.SearchRequest.ConversationalSearchSpec.IUserAnswer, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified UserAnswer message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.SearchRequest.ConversationalSearchSpec.UserAnswer.verify|verify} messages.
                             * @param message UserAnswer message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.retail.v2beta.SearchRequest.ConversationalSearchSpec.IUserAnswer, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a UserAnswer message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns UserAnswer
                             * @throws {Error} If the payload is not 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.retail.v2beta.SearchRequest.ConversationalSearchSpec.UserAnswer;

                            /**
                             * Decodes a UserAnswer message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns UserAnswer
                             * @throws {Error} If the payload 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.retail.v2beta.SearchRequest.ConversationalSearchSpec.UserAnswer;

                            /**
                             * Verifies a UserAnswer message.
                             * @param message Plain 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 UserAnswer message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns UserAnswer
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.SearchRequest.ConversationalSearchSpec.UserAnswer;

                            /**
                             * Creates a plain object from a UserAnswer message. Also converts values to other types if specified.
                             * @param message UserAnswer
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.retail.v2beta.SearchRequest.ConversationalSearchSpec.UserAnswer, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this UserAnswer to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for UserAnswer
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        namespace UserAnswer {

                            /** Properties of a SelectedAnswer. */
                            interface ISelectedAnswer {

                                /** SelectedAnswer productAttributeValues */
                                productAttributeValues?: (google.cloud.retail.v2beta.IProductAttributeValue[]|null);

                                /** SelectedAnswer productAttributeValue */
                                productAttributeValue?: (google.cloud.retail.v2beta.IProductAttributeValue|null);
                            }

                            /** Represents a SelectedAnswer. */
                            class SelectedAnswer implements ISelectedAnswer {

                                /**
                                 * Constructs a new SelectedAnswer.
                                 * @param [properties] Properties to set
                                 */
                                constructor(properties?: google.cloud.retail.v2beta.SearchRequest.ConversationalSearchSpec.UserAnswer.ISelectedAnswer);

                                /** SelectedAnswer productAttributeValues. */
                                public productAttributeValues: google.cloud.retail.v2beta.IProductAttributeValue[];

                                /** SelectedAnswer productAttributeValue. */
                                public productAttributeValue?: (google.cloud.retail.v2beta.IProductAttributeValue|null);

                                /**
                                 * Creates a new SelectedAnswer instance using the specified properties.
                                 * @param [properties] Properties to set
                                 * @returns SelectedAnswer instance
                                 */
                                public static create(properties?: google.cloud.retail.v2beta.SearchRequest.ConversationalSearchSpec.UserAnswer.ISelectedAnswer): google.cloud.retail.v2beta.SearchRequest.ConversationalSearchSpec.UserAnswer.SelectedAnswer;

                                /**
                                 * Encodes the specified SelectedAnswer message. Does not implicitly {@link google.cloud.retail.v2beta.SearchRequest.ConversationalSearchSpec.UserAnswer.SelectedAnswer.verify|verify} messages.
                                 * @param message SelectedAnswer message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encode(message: google.cloud.retail.v2beta.SearchRequest.ConversationalSearchSpec.UserAnswer.ISelectedAnswer, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Encodes the specified SelectedAnswer message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.SearchRequest.ConversationalSearchSpec.UserAnswer.SelectedAnswer.verify|verify} messages.
                                 * @param message SelectedAnswer message or plain object to encode
                                 * @param [writer] Writer to encode to
                                 * @returns Writer
                                 */
                                public static encodeDelimited(message: google.cloud.retail.v2beta.SearchRequest.ConversationalSearchSpec.UserAnswer.ISelectedAnswer, writer?: $protobuf.Writer): $protobuf.Writer;

                                /**
                                 * Decodes a SelectedAnswer message from the specified reader or buffer.
                                 * @param reader Reader or buffer to decode from
                                 * @param [length] Message length if known beforehand
                                 * @returns SelectedAnswer
                                 * @throws {Error} If the payload is not 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.retail.v2beta.SearchRequest.ConversationalSearchSpec.UserAnswer.SelectedAnswer;

                                /**
                                 * Decodes a SelectedAnswer message from the specified reader or buffer, length delimited.
                                 * @param reader Reader or buffer to decode from
                                 * @returns SelectedAnswer
                                 * @throws {Error} If the payload 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.retail.v2beta.SearchRequest.ConversationalSearchSpec.UserAnswer.SelectedAnswer;

                                /**
                                 * Verifies a SelectedAnswer message.
                                 * @param message Plain 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 SelectedAnswer message from a plain object. Also converts values to their respective internal types.
                                 * @param object Plain object
                                 * @returns SelectedAnswer
                                 */
                                public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.SearchRequest.ConversationalSearchSpec.UserAnswer.SelectedAnswer;

                                /**
                                 * Creates a plain object from a SelectedAnswer message. Also converts values to other types if specified.
                                 * @param message SelectedAnswer
                                 * @param [options] Conversion options
                                 * @returns Plain object
                                 */
                                public static toObject(message: google.cloud.retail.v2beta.SearchRequest.ConversationalSearchSpec.UserAnswer.SelectedAnswer, options?: $protobuf.IConversionOptions): { [k: string]: any };

                                /**
                                 * Converts this SelectedAnswer to JSON.
                                 * @returns JSON object
                                 */
                                public toJSON(): { [k: string]: any };

                                /**
                                 * Gets the default type url for SelectedAnswer
                                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                                 * @returns The default type url
                                 */
                                public static getTypeUrl(typeUrlPrefix?: string): string;
                            }
                        }
                    }

                    /** Properties of a TileNavigationSpec. */
                    interface ITileNavigationSpec {

                        /** TileNavigationSpec tileNavigationRequested */
                        tileNavigationRequested?: (boolean|null);

                        /** TileNavigationSpec appliedTiles */
                        appliedTiles?: (google.cloud.retail.v2beta.ITile[]|null);
                    }

                    /** Represents a TileNavigationSpec. */
                    class TileNavigationSpec implements ITileNavigationSpec {

                        /**
                         * Constructs a new TileNavigationSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.SearchRequest.ITileNavigationSpec);

                        /** TileNavigationSpec tileNavigationRequested. */
                        public tileNavigationRequested: boolean;

                        /** TileNavigationSpec appliedTiles. */
                        public appliedTiles: google.cloud.retail.v2beta.ITile[];

                        /**
                         * Creates a new TileNavigationSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TileNavigationSpec instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.SearchRequest.ITileNavigationSpec): google.cloud.retail.v2beta.SearchRequest.TileNavigationSpec;

                        /**
                         * Encodes the specified TileNavigationSpec message. Does not implicitly {@link google.cloud.retail.v2beta.SearchRequest.TileNavigationSpec.verify|verify} messages.
                         * @param message TileNavigationSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.SearchRequest.ITileNavigationSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TileNavigationSpec message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.SearchRequest.TileNavigationSpec.verify|verify} messages.
                         * @param message TileNavigationSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.SearchRequest.ITileNavigationSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TileNavigationSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TileNavigationSpec
                         * @throws {Error} If the payload is not 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.retail.v2beta.SearchRequest.TileNavigationSpec;

                        /**
                         * Decodes a TileNavigationSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TileNavigationSpec
                         * @throws {Error} If the payload 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.retail.v2beta.SearchRequest.TileNavigationSpec;

                        /**
                         * Verifies a TileNavigationSpec message.
                         * @param message Plain 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 TileNavigationSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TileNavigationSpec
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.SearchRequest.TileNavigationSpec;

                        /**
                         * Creates a plain object from a TileNavigationSpec message. Also converts values to other types if specified.
                         * @param message TileNavigationSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.SearchRequest.TileNavigationSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TileNavigationSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TileNavigationSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** SearchMode enum. */
                    enum SearchMode {
                        SEARCH_MODE_UNSPECIFIED = 0,
                        PRODUCT_SEARCH_ONLY = 1,
                        FACETED_SEARCH_ONLY = 2
                    }
                }

                /** Properties of a SearchResponse. */
                interface ISearchResponse {

                    /** SearchResponse results */
                    results?: (google.cloud.retail.v2beta.SearchResponse.ISearchResult[]|null);

                    /** SearchResponse facets */
                    facets?: (google.cloud.retail.v2beta.SearchResponse.IFacet[]|null);

                    /** SearchResponse totalSize */
                    totalSize?: (number|null);

                    /** SearchResponse correctedQuery */
                    correctedQuery?: (string|null);

                    /** SearchResponse attributionToken */
                    attributionToken?: (string|null);

                    /** SearchResponse nextPageToken */
                    nextPageToken?: (string|null);

                    /** SearchResponse queryExpansionInfo */
                    queryExpansionInfo?: (google.cloud.retail.v2beta.SearchResponse.IQueryExpansionInfo|null);

                    /** SearchResponse redirectUri */
                    redirectUri?: (string|null);

                    /** SearchResponse appliedControls */
                    appliedControls?: (string[]|null);

                    /** SearchResponse pinControlMetadata */
                    pinControlMetadata?: (google.cloud.retail.v2beta.IPinControlMetadata|null);

                    /** SearchResponse invalidConditionBoostSpecs */
                    invalidConditionBoostSpecs?: (google.cloud.retail.v2beta.SearchRequest.BoostSpec.IConditionBoostSpec[]|null);

                    /** SearchResponse experimentInfo */
                    experimentInfo?: (google.cloud.retail.v2beta.IExperimentInfo[]|null);

                    /** SearchResponse conversationalSearchResult */
                    conversationalSearchResult?: (google.cloud.retail.v2beta.SearchResponse.IConversationalSearchResult|null);

                    /** SearchResponse tileNavigationResult */
                    tileNavigationResult?: (google.cloud.retail.v2beta.SearchResponse.ITileNavigationResult|null);
                }

                /** Represents a SearchResponse. */
                class SearchResponse implements ISearchResponse {

                    /**
                     * Constructs a new SearchResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.ISearchResponse);

                    /** SearchResponse results. */
                    public results: google.cloud.retail.v2beta.SearchResponse.ISearchResult[];

                    /** SearchResponse facets. */
                    public facets: google.cloud.retail.v2beta.SearchResponse.IFacet[];

                    /** SearchResponse totalSize. */
                    public totalSize: number;

                    /** SearchResponse correctedQuery. */
                    public correctedQuery: string;

                    /** SearchResponse attributionToken. */
                    public attributionToken: string;

                    /** SearchResponse nextPageToken. */
                    public nextPageToken: string;

                    /** SearchResponse queryExpansionInfo. */
                    public queryExpansionInfo?: (google.cloud.retail.v2beta.SearchResponse.IQueryExpansionInfo|null);

                    /** SearchResponse redirectUri. */
                    public redirectUri: string;

                    /** SearchResponse appliedControls. */
                    public appliedControls: string[];

                    /** SearchResponse pinControlMetadata. */
                    public pinControlMetadata?: (google.cloud.retail.v2beta.IPinControlMetadata|null);

                    /** SearchResponse invalidConditionBoostSpecs. */
                    public invalidConditionBoostSpecs: google.cloud.retail.v2beta.SearchRequest.BoostSpec.IConditionBoostSpec[];

                    /** SearchResponse experimentInfo. */
                    public experimentInfo: google.cloud.retail.v2beta.IExperimentInfo[];

                    /** SearchResponse conversationalSearchResult. */
                    public conversationalSearchResult?: (google.cloud.retail.v2beta.SearchResponse.IConversationalSearchResult|null);

                    /** SearchResponse tileNavigationResult. */
                    public tileNavigationResult?: (google.cloud.retail.v2beta.SearchResponse.ITileNavigationResult|null);

                    /**
                     * Creates a new SearchResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SearchResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.ISearchResponse): google.cloud.retail.v2beta.SearchResponse;

                    /**
                     * Encodes the specified SearchResponse message. Does not implicitly {@link google.cloud.retail.v2beta.SearchResponse.verify|verify} messages.
                     * @param message SearchResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.ISearchResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SearchResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.SearchResponse.verify|verify} messages.
                     * @param message SearchResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.ISearchResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SearchResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SearchResponse
                     * @throws {Error} If the payload is not 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.retail.v2beta.SearchResponse;

                    /**
                     * Decodes a SearchResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SearchResponse
                     * @throws {Error} If the payload 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.retail.v2beta.SearchResponse;

                    /**
                     * Verifies a SearchResponse message.
                     * @param message Plain 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 SearchResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SearchResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.SearchResponse;

                    /**
                     * Creates a plain object from a SearchResponse message. Also converts values to other types if specified.
                     * @param message SearchResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.SearchResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SearchResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SearchResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace SearchResponse {

                    /** Properties of a SearchResult. */
                    interface ISearchResult {

                        /** SearchResult id */
                        id?: (string|null);

                        /** SearchResult product */
                        product?: (google.cloud.retail.v2beta.IProduct|null);

                        /** SearchResult matchingVariantCount */
                        matchingVariantCount?: (number|null);

                        /** SearchResult matchingVariantFields */
                        matchingVariantFields?: ({ [k: string]: google.protobuf.IFieldMask }|null);

                        /** SearchResult variantRollupValues */
                        variantRollupValues?: ({ [k: string]: google.protobuf.IValue }|null);

                        /** SearchResult personalLabels */
                        personalLabels?: (string[]|null);

                        /** SearchResult modelScores */
                        modelScores?: ({ [k: string]: google.cloud.retail.v2beta.IDoubleList }|null);
                    }

                    /** Represents a SearchResult. */
                    class SearchResult implements ISearchResult {

                        /**
                         * Constructs a new SearchResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.SearchResponse.ISearchResult);

                        /** SearchResult id. */
                        public id: string;

                        /** SearchResult product. */
                        public product?: (google.cloud.retail.v2beta.IProduct|null);

                        /** SearchResult matchingVariantCount. */
                        public matchingVariantCount: number;

                        /** SearchResult matchingVariantFields. */
                        public matchingVariantFields: { [k: string]: google.protobuf.IFieldMask };

                        /** SearchResult variantRollupValues. */
                        public variantRollupValues: { [k: string]: google.protobuf.IValue };

                        /** SearchResult personalLabels. */
                        public personalLabels: string[];

                        /** SearchResult modelScores. */
                        public modelScores: { [k: string]: google.cloud.retail.v2beta.IDoubleList };

                        /**
                         * Creates a new SearchResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SearchResult instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.SearchResponse.ISearchResult): google.cloud.retail.v2beta.SearchResponse.SearchResult;

                        /**
                         * Encodes the specified SearchResult message. Does not implicitly {@link google.cloud.retail.v2beta.SearchResponse.SearchResult.verify|verify} messages.
                         * @param message SearchResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.SearchResponse.ISearchResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SearchResult message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.SearchResponse.SearchResult.verify|verify} messages.
                         * @param message SearchResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.SearchResponse.ISearchResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SearchResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SearchResult
                         * @throws {Error} If the payload is not 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.retail.v2beta.SearchResponse.SearchResult;

                        /**
                         * Decodes a SearchResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SearchResult
                         * @throws {Error} If the payload 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.retail.v2beta.SearchResponse.SearchResult;

                        /**
                         * Verifies a SearchResult message.
                         * @param message Plain 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 SearchResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SearchResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.SearchResponse.SearchResult;

                        /**
                         * Creates a plain object from a SearchResult message. Also converts values to other types if specified.
                         * @param message SearchResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.SearchResponse.SearchResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SearchResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SearchResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a Facet. */
                    interface IFacet {

                        /** Facet key */
                        key?: (string|null);

                        /** Facet values */
                        values?: (google.cloud.retail.v2beta.SearchResponse.Facet.IFacetValue[]|null);

                        /** Facet dynamicFacet */
                        dynamicFacet?: (boolean|null);
                    }

                    /** Represents a Facet. */
                    class Facet implements IFacet {

                        /**
                         * Constructs a new Facet.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.SearchResponse.IFacet);

                        /** Facet key. */
                        public key: string;

                        /** Facet values. */
                        public values: google.cloud.retail.v2beta.SearchResponse.Facet.IFacetValue[];

                        /** Facet dynamicFacet. */
                        public dynamicFacet: boolean;

                        /**
                         * Creates a new Facet instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns Facet instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.SearchResponse.IFacet): google.cloud.retail.v2beta.SearchResponse.Facet;

                        /**
                         * Encodes the specified Facet message. Does not implicitly {@link google.cloud.retail.v2beta.SearchResponse.Facet.verify|verify} messages.
                         * @param message Facet message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.SearchResponse.IFacet, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified Facet message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.SearchResponse.Facet.verify|verify} messages.
                         * @param message Facet message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.SearchResponse.IFacet, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a Facet message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns Facet
                         * @throws {Error} If the payload is not 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.retail.v2beta.SearchResponse.Facet;

                        /**
                         * Decodes a Facet message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns Facet
                         * @throws {Error} If the payload 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.retail.v2beta.SearchResponse.Facet;

                        /**
                         * Verifies a Facet message.
                         * @param message Plain 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 Facet message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns Facet
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.SearchResponse.Facet;

                        /**
                         * Creates a plain object from a Facet message. Also converts values to other types if specified.
                         * @param message Facet
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.SearchResponse.Facet, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this Facet to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for Facet
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace Facet {

                        /** Properties of a FacetValue. */
                        interface IFacetValue {

                            /** FacetValue value */
                            value?: (string|null);

                            /** FacetValue interval */
                            interval?: (google.cloud.retail.v2beta.IInterval|null);

                            /** FacetValue count */
                            count?: (number|Long|string|null);

                            /** FacetValue minValue */
                            minValue?: (number|null);

                            /** FacetValue maxValue */
                            maxValue?: (number|null);
                        }

                        /** Represents a FacetValue. */
                        class FacetValue implements IFacetValue {

                            /**
                             * Constructs a new FacetValue.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2beta.SearchResponse.Facet.IFacetValue);

                            /** FacetValue value. */
                            public value?: (string|null);

                            /** FacetValue interval. */
                            public interval?: (google.cloud.retail.v2beta.IInterval|null);

                            /** FacetValue count. */
                            public count: (number|Long|string);

                            /** FacetValue minValue. */
                            public minValue: number;

                            /** FacetValue maxValue. */
                            public maxValue: number;

                            /** FacetValue facetValue. */
                            public facetValue?: ("value"|"interval");

                            /**
                             * Creates a new FacetValue instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns FacetValue instance
                             */
                            public static create(properties?: google.cloud.retail.v2beta.SearchResponse.Facet.IFacetValue): google.cloud.retail.v2beta.SearchResponse.Facet.FacetValue;

                            /**
                             * Encodes the specified FacetValue message. Does not implicitly {@link google.cloud.retail.v2beta.SearchResponse.Facet.FacetValue.verify|verify} messages.
                             * @param message FacetValue message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.retail.v2beta.SearchResponse.Facet.IFacetValue, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified FacetValue message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.SearchResponse.Facet.FacetValue.verify|verify} messages.
                             * @param message FacetValue message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.retail.v2beta.SearchResponse.Facet.IFacetValue, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a FacetValue message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns FacetValue
                             * @throws {Error} If the payload is not 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.retail.v2beta.SearchResponse.Facet.FacetValue;

                            /**
                             * Decodes a FacetValue message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns FacetValue
                             * @throws {Error} If the payload 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.retail.v2beta.SearchResponse.Facet.FacetValue;

                            /**
                             * Verifies a FacetValue message.
                             * @param message Plain 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 FacetValue message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns FacetValue
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.SearchResponse.Facet.FacetValue;

                            /**
                             * Creates a plain object from a FacetValue message. Also converts values to other types if specified.
                             * @param message FacetValue
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.retail.v2beta.SearchResponse.Facet.FacetValue, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this FacetValue to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for FacetValue
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a QueryExpansionInfo. */
                    interface IQueryExpansionInfo {

                        /** QueryExpansionInfo expandedQuery */
                        expandedQuery?: (boolean|null);

                        /** QueryExpansionInfo pinnedResultCount */
                        pinnedResultCount?: (number|Long|string|null);
                    }

                    /** Represents a QueryExpansionInfo. */
                    class QueryExpansionInfo implements IQueryExpansionInfo {

                        /**
                         * Constructs a new QueryExpansionInfo.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.SearchResponse.IQueryExpansionInfo);

                        /** QueryExpansionInfo expandedQuery. */
                        public expandedQuery: boolean;

                        /** QueryExpansionInfo pinnedResultCount. */
                        public pinnedResultCount: (number|Long|string);

                        /**
                         * Creates a new QueryExpansionInfo instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns QueryExpansionInfo instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.SearchResponse.IQueryExpansionInfo): google.cloud.retail.v2beta.SearchResponse.QueryExpansionInfo;

                        /**
                         * Encodes the specified QueryExpansionInfo message. Does not implicitly {@link google.cloud.retail.v2beta.SearchResponse.QueryExpansionInfo.verify|verify} messages.
                         * @param message QueryExpansionInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.SearchResponse.IQueryExpansionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified QueryExpansionInfo message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.SearchResponse.QueryExpansionInfo.verify|verify} messages.
                         * @param message QueryExpansionInfo message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.SearchResponse.IQueryExpansionInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a QueryExpansionInfo message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns QueryExpansionInfo
                         * @throws {Error} If the payload is not 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.retail.v2beta.SearchResponse.QueryExpansionInfo;

                        /**
                         * Decodes a QueryExpansionInfo message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns QueryExpansionInfo
                         * @throws {Error} If the payload 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.retail.v2beta.SearchResponse.QueryExpansionInfo;

                        /**
                         * Verifies a QueryExpansionInfo message.
                         * @param message Plain 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 QueryExpansionInfo message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns QueryExpansionInfo
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.SearchResponse.QueryExpansionInfo;

                        /**
                         * Creates a plain object from a QueryExpansionInfo message. Also converts values to other types if specified.
                         * @param message QueryExpansionInfo
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.SearchResponse.QueryExpansionInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this QueryExpansionInfo to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for QueryExpansionInfo
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ConversationalSearchResult. */
                    interface IConversationalSearchResult {

                        /** ConversationalSearchResult conversationId */
                        conversationId?: (string|null);

                        /** ConversationalSearchResult refinedQuery */
                        refinedQuery?: (string|null);

                        /** ConversationalSearchResult additionalFilters */
                        additionalFilters?: (google.cloud.retail.v2beta.SearchResponse.ConversationalSearchResult.IAdditionalFilter[]|null);

                        /** ConversationalSearchResult followupQuestion */
                        followupQuestion?: (string|null);

                        /** ConversationalSearchResult suggestedAnswers */
                        suggestedAnswers?: (google.cloud.retail.v2beta.SearchResponse.ConversationalSearchResult.ISuggestedAnswer[]|null);

                        /** ConversationalSearchResult additionalFilter */
                        additionalFilter?: (google.cloud.retail.v2beta.SearchResponse.ConversationalSearchResult.IAdditionalFilter|null);
                    }

                    /** Represents a ConversationalSearchResult. */
                    class ConversationalSearchResult implements IConversationalSearchResult {

                        /**
                         * Constructs a new ConversationalSearchResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.SearchResponse.IConversationalSearchResult);

                        /** ConversationalSearchResult conversationId. */
                        public conversationId: string;

                        /** ConversationalSearchResult refinedQuery. */
                        public refinedQuery: string;

                        /** ConversationalSearchResult additionalFilters. */
                        public additionalFilters: google.cloud.retail.v2beta.SearchResponse.ConversationalSearchResult.IAdditionalFilter[];

                        /** ConversationalSearchResult followupQuestion. */
                        public followupQuestion: string;

                        /** ConversationalSearchResult suggestedAnswers. */
                        public suggestedAnswers: google.cloud.retail.v2beta.SearchResponse.ConversationalSearchResult.ISuggestedAnswer[];

                        /** ConversationalSearchResult additionalFilter. */
                        public additionalFilter?: (google.cloud.retail.v2beta.SearchResponse.ConversationalSearchResult.IAdditionalFilter|null);

                        /**
                         * Creates a new ConversationalSearchResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversationalSearchResult instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.SearchResponse.IConversationalSearchResult): google.cloud.retail.v2beta.SearchResponse.ConversationalSearchResult;

                        /**
                         * Encodes the specified ConversationalSearchResult message. Does not implicitly {@link google.cloud.retail.v2beta.SearchResponse.ConversationalSearchResult.verify|verify} messages.
                         * @param message ConversationalSearchResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.SearchResponse.IConversationalSearchResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversationalSearchResult message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.SearchResponse.ConversationalSearchResult.verify|verify} messages.
                         * @param message ConversationalSearchResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.SearchResponse.IConversationalSearchResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversationalSearchResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversationalSearchResult
                         * @throws {Error} If the payload is not 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.retail.v2beta.SearchResponse.ConversationalSearchResult;

                        /**
                         * Decodes a ConversationalSearchResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversationalSearchResult
                         * @throws {Error} If the payload 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.retail.v2beta.SearchResponse.ConversationalSearchResult;

                        /**
                         * Verifies a ConversationalSearchResult message.
                         * @param message Plain 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 ConversationalSearchResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversationalSearchResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.SearchResponse.ConversationalSearchResult;

                        /**
                         * Creates a plain object from a ConversationalSearchResult message. Also converts values to other types if specified.
                         * @param message ConversationalSearchResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.SearchResponse.ConversationalSearchResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversationalSearchResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversationalSearchResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ConversationalSearchResult {

                        /** Properties of a SuggestedAnswer. */
                        interface ISuggestedAnswer {

                            /** SuggestedAnswer productAttributeValue */
                            productAttributeValue?: (google.cloud.retail.v2beta.IProductAttributeValue|null);
                        }

                        /** Represents a SuggestedAnswer. */
                        class SuggestedAnswer implements ISuggestedAnswer {

                            /**
                             * Constructs a new SuggestedAnswer.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2beta.SearchResponse.ConversationalSearchResult.ISuggestedAnswer);

                            /** SuggestedAnswer productAttributeValue. */
                            public productAttributeValue?: (google.cloud.retail.v2beta.IProductAttributeValue|null);

                            /**
                             * Creates a new SuggestedAnswer instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns SuggestedAnswer instance
                             */
                            public static create(properties?: google.cloud.retail.v2beta.SearchResponse.ConversationalSearchResult.ISuggestedAnswer): google.cloud.retail.v2beta.SearchResponse.ConversationalSearchResult.SuggestedAnswer;

                            /**
                             * Encodes the specified SuggestedAnswer message. Does not implicitly {@link google.cloud.retail.v2beta.SearchResponse.ConversationalSearchResult.SuggestedAnswer.verify|verify} messages.
                             * @param message SuggestedAnswer message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.retail.v2beta.SearchResponse.ConversationalSearchResult.ISuggestedAnswer, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified SuggestedAnswer message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.SearchResponse.ConversationalSearchResult.SuggestedAnswer.verify|verify} messages.
                             * @param message SuggestedAnswer message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.retail.v2beta.SearchResponse.ConversationalSearchResult.ISuggestedAnswer, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a SuggestedAnswer message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns SuggestedAnswer
                             * @throws {Error} If the payload is not 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.retail.v2beta.SearchResponse.ConversationalSearchResult.SuggestedAnswer;

                            /**
                             * Decodes a SuggestedAnswer message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns SuggestedAnswer
                             * @throws {Error} If the payload 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.retail.v2beta.SearchResponse.ConversationalSearchResult.SuggestedAnswer;

                            /**
                             * Verifies a SuggestedAnswer message.
                             * @param message Plain 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 SuggestedAnswer message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns SuggestedAnswer
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.SearchResponse.ConversationalSearchResult.SuggestedAnswer;

                            /**
                             * Creates a plain object from a SuggestedAnswer message. Also converts values to other types if specified.
                             * @param message SuggestedAnswer
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.retail.v2beta.SearchResponse.ConversationalSearchResult.SuggestedAnswer, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this SuggestedAnswer to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for SuggestedAnswer
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** Properties of an AdditionalFilter. */
                        interface IAdditionalFilter {

                            /** AdditionalFilter productAttributeValue */
                            productAttributeValue?: (google.cloud.retail.v2beta.IProductAttributeValue|null);
                        }

                        /** Represents an AdditionalFilter. */
                        class AdditionalFilter implements IAdditionalFilter {

                            /**
                             * Constructs a new AdditionalFilter.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2beta.SearchResponse.ConversationalSearchResult.IAdditionalFilter);

                            /** AdditionalFilter productAttributeValue. */
                            public productAttributeValue?: (google.cloud.retail.v2beta.IProductAttributeValue|null);

                            /**
                             * Creates a new AdditionalFilter instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns AdditionalFilter instance
                             */
                            public static create(properties?: google.cloud.retail.v2beta.SearchResponse.ConversationalSearchResult.IAdditionalFilter): google.cloud.retail.v2beta.SearchResponse.ConversationalSearchResult.AdditionalFilter;

                            /**
                             * Encodes the specified AdditionalFilter message. Does not implicitly {@link google.cloud.retail.v2beta.SearchResponse.ConversationalSearchResult.AdditionalFilter.verify|verify} messages.
                             * @param message AdditionalFilter message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.retail.v2beta.SearchResponse.ConversationalSearchResult.IAdditionalFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified AdditionalFilter message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.SearchResponse.ConversationalSearchResult.AdditionalFilter.verify|verify} messages.
                             * @param message AdditionalFilter message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.retail.v2beta.SearchResponse.ConversationalSearchResult.IAdditionalFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an AdditionalFilter message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns AdditionalFilter
                             * @throws {Error} If the payload is not 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.retail.v2beta.SearchResponse.ConversationalSearchResult.AdditionalFilter;

                            /**
                             * Decodes an AdditionalFilter message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns AdditionalFilter
                             * @throws {Error} If the payload 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.retail.v2beta.SearchResponse.ConversationalSearchResult.AdditionalFilter;

                            /**
                             * Verifies an AdditionalFilter message.
                             * @param message Plain 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 AdditionalFilter message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns AdditionalFilter
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.SearchResponse.ConversationalSearchResult.AdditionalFilter;

                            /**
                             * Creates a plain object from an AdditionalFilter message. Also converts values to other types if specified.
                             * @param message AdditionalFilter
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.retail.v2beta.SearchResponse.ConversationalSearchResult.AdditionalFilter, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this AdditionalFilter to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for AdditionalFilter
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a TileNavigationResult. */
                    interface ITileNavigationResult {

                        /** TileNavigationResult tiles */
                        tiles?: (google.cloud.retail.v2beta.ITile[]|null);
                    }

                    /** Represents a TileNavigationResult. */
                    class TileNavigationResult implements ITileNavigationResult {

                        /**
                         * Constructs a new TileNavigationResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.SearchResponse.ITileNavigationResult);

                        /** TileNavigationResult tiles. */
                        public tiles: google.cloud.retail.v2beta.ITile[];

                        /**
                         * Creates a new TileNavigationResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns TileNavigationResult instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.SearchResponse.ITileNavigationResult): google.cloud.retail.v2beta.SearchResponse.TileNavigationResult;

                        /**
                         * Encodes the specified TileNavigationResult message. Does not implicitly {@link google.cloud.retail.v2beta.SearchResponse.TileNavigationResult.verify|verify} messages.
                         * @param message TileNavigationResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.SearchResponse.ITileNavigationResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified TileNavigationResult message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.SearchResponse.TileNavigationResult.verify|verify} messages.
                         * @param message TileNavigationResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.SearchResponse.ITileNavigationResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a TileNavigationResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns TileNavigationResult
                         * @throws {Error} If the payload is not 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.retail.v2beta.SearchResponse.TileNavigationResult;

                        /**
                         * Decodes a TileNavigationResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns TileNavigationResult
                         * @throws {Error} If the payload 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.retail.v2beta.SearchResponse.TileNavigationResult;

                        /**
                         * Verifies a TileNavigationResult message.
                         * @param message Plain 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 TileNavigationResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns TileNavigationResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.SearchResponse.TileNavigationResult;

                        /**
                         * Creates a plain object from a TileNavigationResult message. Also converts values to other types if specified.
                         * @param message TileNavigationResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.SearchResponse.TileNavigationResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this TileNavigationResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for TileNavigationResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of an ExperimentInfo. */
                interface IExperimentInfo {

                    /** ExperimentInfo servingConfigExperiment */
                    servingConfigExperiment?: (google.cloud.retail.v2beta.ExperimentInfo.IServingConfigExperiment|null);

                    /** ExperimentInfo experiment */
                    experiment?: (string|null);
                }

                /** Represents an ExperimentInfo. */
                class ExperimentInfo implements IExperimentInfo {

                    /**
                     * Constructs a new ExperimentInfo.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IExperimentInfo);

                    /** ExperimentInfo servingConfigExperiment. */
                    public servingConfigExperiment?: (google.cloud.retail.v2beta.ExperimentInfo.IServingConfigExperiment|null);

                    /** ExperimentInfo experiment. */
                    public experiment: string;

                    /** ExperimentInfo experimentMetadata. */
                    public experimentMetadata?: "servingConfigExperiment";

                    /**
                     * Creates a new ExperimentInfo instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ExperimentInfo instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IExperimentInfo): google.cloud.retail.v2beta.ExperimentInfo;

                    /**
                     * Encodes the specified ExperimentInfo message. Does not implicitly {@link google.cloud.retail.v2beta.ExperimentInfo.verify|verify} messages.
                     * @param message ExperimentInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IExperimentInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ExperimentInfo message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ExperimentInfo.verify|verify} messages.
                     * @param message ExperimentInfo message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IExperimentInfo, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an ExperimentInfo message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ExperimentInfo
                     * @throws {Error} If the payload is not 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.retail.v2beta.ExperimentInfo;

                    /**
                     * Decodes an ExperimentInfo message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ExperimentInfo
                     * @throws {Error} If the payload 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.retail.v2beta.ExperimentInfo;

                    /**
                     * Verifies an ExperimentInfo message.
                     * @param message Plain 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 ExperimentInfo message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ExperimentInfo
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ExperimentInfo;

                    /**
                     * Creates a plain object from an ExperimentInfo message. Also converts values to other types if specified.
                     * @param message ExperimentInfo
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ExperimentInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ExperimentInfo to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ExperimentInfo
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace ExperimentInfo {

                    /** Properties of a ServingConfigExperiment. */
                    interface IServingConfigExperiment {

                        /** ServingConfigExperiment originalServingConfig */
                        originalServingConfig?: (string|null);

                        /** ServingConfigExperiment experimentServingConfig */
                        experimentServingConfig?: (string|null);
                    }

                    /** Represents a ServingConfigExperiment. */
                    class ServingConfigExperiment implements IServingConfigExperiment {

                        /**
                         * Constructs a new ServingConfigExperiment.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.ExperimentInfo.IServingConfigExperiment);

                        /** ServingConfigExperiment originalServingConfig. */
                        public originalServingConfig: string;

                        /** ServingConfigExperiment experimentServingConfig. */
                        public experimentServingConfig: string;

                        /**
                         * Creates a new ServingConfigExperiment instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ServingConfigExperiment instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.ExperimentInfo.IServingConfigExperiment): google.cloud.retail.v2beta.ExperimentInfo.ServingConfigExperiment;

                        /**
                         * Encodes the specified ServingConfigExperiment message. Does not implicitly {@link google.cloud.retail.v2beta.ExperimentInfo.ServingConfigExperiment.verify|verify} messages.
                         * @param message ServingConfigExperiment message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.ExperimentInfo.IServingConfigExperiment, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ServingConfigExperiment message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ExperimentInfo.ServingConfigExperiment.verify|verify} messages.
                         * @param message ServingConfigExperiment message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.ExperimentInfo.IServingConfigExperiment, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ServingConfigExperiment message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ServingConfigExperiment
                         * @throws {Error} If the payload is not 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.retail.v2beta.ExperimentInfo.ServingConfigExperiment;

                        /**
                         * Decodes a ServingConfigExperiment message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ServingConfigExperiment
                         * @throws {Error} If the payload 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.retail.v2beta.ExperimentInfo.ServingConfigExperiment;

                        /**
                         * Verifies a ServingConfigExperiment message.
                         * @param message Plain 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 ServingConfigExperiment message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ServingConfigExperiment
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ExperimentInfo.ServingConfigExperiment;

                        /**
                         * Creates a plain object from a ServingConfigExperiment message. Also converts values to other types if specified.
                         * @param message ServingConfigExperiment
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.ExperimentInfo.ServingConfigExperiment, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ServingConfigExperiment to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ServingConfigExperiment
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Represents a ControlService */
                class ControlService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new ControlService 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 ControlService 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): ControlService;

                    /**
                     * Calls CreateControl.
                     * @param request CreateControlRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Control
                     */
                    public createControl(request: google.cloud.retail.v2beta.ICreateControlRequest, callback: google.cloud.retail.v2beta.ControlService.CreateControlCallback): void;

                    /**
                     * Calls CreateControl.
                     * @param request CreateControlRequest message or plain object
                     * @returns Promise
                     */
                    public createControl(request: google.cloud.retail.v2beta.ICreateControlRequest): Promise<google.cloud.retail.v2beta.Control>;

                    /**
                     * Calls DeleteControl.
                     * @param request DeleteControlRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Empty
                     */
                    public deleteControl(request: google.cloud.retail.v2beta.IDeleteControlRequest, callback: google.cloud.retail.v2beta.ControlService.DeleteControlCallback): void;

                    /**
                     * Calls DeleteControl.
                     * @param request DeleteControlRequest message or plain object
                     * @returns Promise
                     */
                    public deleteControl(request: google.cloud.retail.v2beta.IDeleteControlRequest): Promise<google.protobuf.Empty>;

                    /**
                     * Calls UpdateControl.
                     * @param request UpdateControlRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Control
                     */
                    public updateControl(request: google.cloud.retail.v2beta.IUpdateControlRequest, callback: google.cloud.retail.v2beta.ControlService.UpdateControlCallback): void;

                    /**
                     * Calls UpdateControl.
                     * @param request UpdateControlRequest message or plain object
                     * @returns Promise
                     */
                    public updateControl(request: google.cloud.retail.v2beta.IUpdateControlRequest): Promise<google.cloud.retail.v2beta.Control>;

                    /**
                     * Calls GetControl.
                     * @param request GetControlRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Control
                     */
                    public getControl(request: google.cloud.retail.v2beta.IGetControlRequest, callback: google.cloud.retail.v2beta.ControlService.GetControlCallback): void;

                    /**
                     * Calls GetControl.
                     * @param request GetControlRequest message or plain object
                     * @returns Promise
                     */
                    public getControl(request: google.cloud.retail.v2beta.IGetControlRequest): Promise<google.cloud.retail.v2beta.Control>;

                    /**
                     * Calls ListControls.
                     * @param request ListControlsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListControlsResponse
                     */
                    public listControls(request: google.cloud.retail.v2beta.IListControlsRequest, callback: google.cloud.retail.v2beta.ControlService.ListControlsCallback): void;

                    /**
                     * Calls ListControls.
                     * @param request ListControlsRequest message or plain object
                     * @returns Promise
                     */
                    public listControls(request: google.cloud.retail.v2beta.IListControlsRequest): Promise<google.cloud.retail.v2beta.ListControlsResponse>;
                }

                namespace ControlService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.ControlService|createControl}.
                     * @param error Error, if any
                     * @param [response] Control
                     */
                    type CreateControlCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.Control) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.ControlService|deleteControl}.
                     * @param error Error, if any
                     * @param [response] Empty
                     */
                    type DeleteControlCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.ControlService|updateControl}.
                     * @param error Error, if any
                     * @param [response] Control
                     */
                    type UpdateControlCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.Control) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.ControlService|getControl}.
                     * @param error Error, if any
                     * @param [response] Control
                     */
                    type GetControlCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.Control) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.ControlService|listControls}.
                     * @param error Error, if any
                     * @param [response] ListControlsResponse
                     */
                    type ListControlsCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.ListControlsResponse) => void;
                }

                /** Properties of a CreateControlRequest. */
                interface ICreateControlRequest {

                    /** CreateControlRequest parent */
                    parent?: (string|null);

                    /** CreateControlRequest control */
                    control?: (google.cloud.retail.v2beta.IControl|null);

                    /** CreateControlRequest controlId */
                    controlId?: (string|null);
                }

                /** Represents a CreateControlRequest. */
                class CreateControlRequest implements ICreateControlRequest {

                    /**
                     * Constructs a new CreateControlRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.ICreateControlRequest);

                    /** CreateControlRequest parent. */
                    public parent: string;

                    /** CreateControlRequest control. */
                    public control?: (google.cloud.retail.v2beta.IControl|null);

                    /** CreateControlRequest controlId. */
                    public controlId: string;

                    /**
                     * Creates a new CreateControlRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CreateControlRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.ICreateControlRequest): google.cloud.retail.v2beta.CreateControlRequest;

                    /**
                     * Encodes the specified CreateControlRequest message. Does not implicitly {@link google.cloud.retail.v2beta.CreateControlRequest.verify|verify} messages.
                     * @param message CreateControlRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.ICreateControlRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CreateControlRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.CreateControlRequest.verify|verify} messages.
                     * @param message CreateControlRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.ICreateControlRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CreateControlRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CreateControlRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.CreateControlRequest;

                    /**
                     * Decodes a CreateControlRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CreateControlRequest
                     * @throws {Error} If the payload 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.retail.v2beta.CreateControlRequest;

                    /**
                     * Verifies a CreateControlRequest message.
                     * @param message Plain 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 CreateControlRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CreateControlRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.CreateControlRequest;

                    /**
                     * Creates a plain object from a CreateControlRequest message. Also converts values to other types if specified.
                     * @param message CreateControlRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.CreateControlRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CreateControlRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CreateControlRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateControlRequest. */
                interface IUpdateControlRequest {

                    /** UpdateControlRequest control */
                    control?: (google.cloud.retail.v2beta.IControl|null);

                    /** UpdateControlRequest updateMask */
                    updateMask?: (google.protobuf.IFieldMask|null);
                }

                /** Represents an UpdateControlRequest. */
                class UpdateControlRequest implements IUpdateControlRequest {

                    /**
                     * Constructs a new UpdateControlRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IUpdateControlRequest);

                    /** UpdateControlRequest control. */
                    public control?: (google.cloud.retail.v2beta.IControl|null);

                    /** UpdateControlRequest updateMask. */
                    public updateMask?: (google.protobuf.IFieldMask|null);

                    /**
                     * Creates a new UpdateControlRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateControlRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IUpdateControlRequest): google.cloud.retail.v2beta.UpdateControlRequest;

                    /**
                     * Encodes the specified UpdateControlRequest message. Does not implicitly {@link google.cloud.retail.v2beta.UpdateControlRequest.verify|verify} messages.
                     * @param message UpdateControlRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IUpdateControlRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateControlRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.UpdateControlRequest.verify|verify} messages.
                     * @param message UpdateControlRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IUpdateControlRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateControlRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateControlRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.UpdateControlRequest;

                    /**
                     * Decodes an UpdateControlRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateControlRequest
                     * @throws {Error} If the payload 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.retail.v2beta.UpdateControlRequest;

                    /**
                     * Verifies an UpdateControlRequest message.
                     * @param message Plain 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 UpdateControlRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateControlRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.UpdateControlRequest;

                    /**
                     * Creates a plain object from an UpdateControlRequest message. Also converts values to other types if specified.
                     * @param message UpdateControlRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.UpdateControlRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateControlRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateControlRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeleteControlRequest. */
                interface IDeleteControlRequest {

                    /** DeleteControlRequest name */
                    name?: (string|null);
                }

                /** Represents a DeleteControlRequest. */
                class DeleteControlRequest implements IDeleteControlRequest {

                    /**
                     * Constructs a new DeleteControlRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IDeleteControlRequest);

                    /** DeleteControlRequest name. */
                    public name: string;

                    /**
                     * Creates a new DeleteControlRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeleteControlRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IDeleteControlRequest): google.cloud.retail.v2beta.DeleteControlRequest;

                    /**
                     * Encodes the specified DeleteControlRequest message. Does not implicitly {@link google.cloud.retail.v2beta.DeleteControlRequest.verify|verify} messages.
                     * @param message DeleteControlRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IDeleteControlRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeleteControlRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.DeleteControlRequest.verify|verify} messages.
                     * @param message DeleteControlRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IDeleteControlRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeleteControlRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeleteControlRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.DeleteControlRequest;

                    /**
                     * Decodes a DeleteControlRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeleteControlRequest
                     * @throws {Error} If the payload 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.retail.v2beta.DeleteControlRequest;

                    /**
                     * Verifies a DeleteControlRequest message.
                     * @param message Plain 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 DeleteControlRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeleteControlRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.DeleteControlRequest;

                    /**
                     * Creates a plain object from a DeleteControlRequest message. Also converts values to other types if specified.
                     * @param message DeleteControlRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.DeleteControlRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeleteControlRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeleteControlRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetControlRequest. */
                interface IGetControlRequest {

                    /** GetControlRequest name */
                    name?: (string|null);
                }

                /** Represents a GetControlRequest. */
                class GetControlRequest implements IGetControlRequest {

                    /**
                     * Constructs a new GetControlRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IGetControlRequest);

                    /** GetControlRequest name. */
                    public name: string;

                    /**
                     * Creates a new GetControlRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetControlRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IGetControlRequest): google.cloud.retail.v2beta.GetControlRequest;

                    /**
                     * Encodes the specified GetControlRequest message. Does not implicitly {@link google.cloud.retail.v2beta.GetControlRequest.verify|verify} messages.
                     * @param message GetControlRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IGetControlRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetControlRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.GetControlRequest.verify|verify} messages.
                     * @param message GetControlRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IGetControlRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetControlRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetControlRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.GetControlRequest;

                    /**
                     * Decodes a GetControlRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetControlRequest
                     * @throws {Error} If the payload 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.retail.v2beta.GetControlRequest;

                    /**
                     * Verifies a GetControlRequest message.
                     * @param message Plain 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 GetControlRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetControlRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.GetControlRequest;

                    /**
                     * Creates a plain object from a GetControlRequest message. Also converts values to other types if specified.
                     * @param message GetControlRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.GetControlRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetControlRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetControlRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListControlsRequest. */
                interface IListControlsRequest {

                    /** ListControlsRequest parent */
                    parent?: (string|null);

                    /** ListControlsRequest pageSize */
                    pageSize?: (number|null);

                    /** ListControlsRequest pageToken */
                    pageToken?: (string|null);

                    /** ListControlsRequest filter */
                    filter?: (string|null);
                }

                /** Represents a ListControlsRequest. */
                class ListControlsRequest implements IListControlsRequest {

                    /**
                     * Constructs a new ListControlsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IListControlsRequest);

                    /** ListControlsRequest parent. */
                    public parent: string;

                    /** ListControlsRequest pageSize. */
                    public pageSize: number;

                    /** ListControlsRequest pageToken. */
                    public pageToken: string;

                    /** ListControlsRequest filter. */
                    public filter: string;

                    /**
                     * Creates a new ListControlsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListControlsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IListControlsRequest): google.cloud.retail.v2beta.ListControlsRequest;

                    /**
                     * Encodes the specified ListControlsRequest message. Does not implicitly {@link google.cloud.retail.v2beta.ListControlsRequest.verify|verify} messages.
                     * @param message ListControlsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IListControlsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListControlsRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ListControlsRequest.verify|verify} messages.
                     * @param message ListControlsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IListControlsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListControlsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListControlsRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.ListControlsRequest;

                    /**
                     * Decodes a ListControlsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListControlsRequest
                     * @throws {Error} If the payload 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.retail.v2beta.ListControlsRequest;

                    /**
                     * Verifies a ListControlsRequest message.
                     * @param message Plain 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 ListControlsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListControlsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ListControlsRequest;

                    /**
                     * Creates a plain object from a ListControlsRequest message. Also converts values to other types if specified.
                     * @param message ListControlsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ListControlsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListControlsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListControlsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListControlsResponse. */
                interface IListControlsResponse {

                    /** ListControlsResponse controls */
                    controls?: (google.cloud.retail.v2beta.IControl[]|null);

                    /** ListControlsResponse nextPageToken */
                    nextPageToken?: (string|null);
                }

                /** Represents a ListControlsResponse. */
                class ListControlsResponse implements IListControlsResponse {

                    /**
                     * Constructs a new ListControlsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IListControlsResponse);

                    /** ListControlsResponse controls. */
                    public controls: google.cloud.retail.v2beta.IControl[];

                    /** ListControlsResponse nextPageToken. */
                    public nextPageToken: string;

                    /**
                     * Creates a new ListControlsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListControlsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IListControlsResponse): google.cloud.retail.v2beta.ListControlsResponse;

                    /**
                     * Encodes the specified ListControlsResponse message. Does not implicitly {@link google.cloud.retail.v2beta.ListControlsResponse.verify|verify} messages.
                     * @param message ListControlsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IListControlsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListControlsResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ListControlsResponse.verify|verify} messages.
                     * @param message ListControlsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IListControlsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListControlsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListControlsResponse
                     * @throws {Error} If the payload is not 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.retail.v2beta.ListControlsResponse;

                    /**
                     * Decodes a ListControlsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListControlsResponse
                     * @throws {Error} If the payload 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.retail.v2beta.ListControlsResponse;

                    /**
                     * Verifies a ListControlsResponse message.
                     * @param message Plain 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 ListControlsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListControlsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ListControlsResponse;

                    /**
                     * Creates a plain object from a ListControlsResponse message. Also converts values to other types if specified.
                     * @param message ListControlsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ListControlsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListControlsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListControlsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Represents a ConversationalSearchService */
                class ConversationalSearchService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new ConversationalSearchService 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 ConversationalSearchService 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): ConversationalSearchService;

                    /**
                     * Calls ConversationalSearch.
                     * @param request ConversationalSearchRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ConversationalSearchResponse
                     */
                    public conversationalSearch(request: google.cloud.retail.v2beta.IConversationalSearchRequest, callback: google.cloud.retail.v2beta.ConversationalSearchService.ConversationalSearchCallback): void;

                    /**
                     * Calls ConversationalSearch.
                     * @param request ConversationalSearchRequest message or plain object
                     * @returns Promise
                     */
                    public conversationalSearch(request: google.cloud.retail.v2beta.IConversationalSearchRequest): Promise<google.cloud.retail.v2beta.ConversationalSearchResponse>;
                }

                namespace ConversationalSearchService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.ConversationalSearchService|conversationalSearch}.
                     * @param error Error, if any
                     * @param [response] ConversationalSearchResponse
                     */
                    type ConversationalSearchCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.ConversationalSearchResponse) => void;
                }

                /** Properties of a ConversationalSearchRequest. */
                interface IConversationalSearchRequest {

                    /** ConversationalSearchRequest placement */
                    placement?: (string|null);

                    /** ConversationalSearchRequest branch */
                    branch?: (string|null);

                    /** ConversationalSearchRequest query */
                    query?: (string|null);

                    /** ConversationalSearchRequest pageCategories */
                    pageCategories?: (string[]|null);

                    /** ConversationalSearchRequest conversationId */
                    conversationId?: (string|null);

                    /** ConversationalSearchRequest searchParams */
                    searchParams?: (google.cloud.retail.v2beta.ConversationalSearchRequest.ISearchParams|null);

                    /** ConversationalSearchRequest visitorId */
                    visitorId?: (string|null);

                    /** ConversationalSearchRequest userInfo */
                    userInfo?: (google.cloud.retail.v2beta.IUserInfo|null);

                    /** ConversationalSearchRequest conversationalFilteringSpec */
                    conversationalFilteringSpec?: (google.cloud.retail.v2beta.ConversationalSearchRequest.IConversationalFilteringSpec|null);

                    /** ConversationalSearchRequest userLabels */
                    userLabels?: ({ [k: string]: string }|null);

                    /** ConversationalSearchRequest safetySettings */
                    safetySettings?: (google.cloud.retail.v2beta.ISafetySetting[]|null);
                }

                /** Represents a ConversationalSearchRequest. */
                class ConversationalSearchRequest implements IConversationalSearchRequest {

                    /**
                     * Constructs a new ConversationalSearchRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IConversationalSearchRequest);

                    /** ConversationalSearchRequest placement. */
                    public placement: string;

                    /** ConversationalSearchRequest branch. */
                    public branch: string;

                    /** ConversationalSearchRequest query. */
                    public query: string;

                    /** ConversationalSearchRequest pageCategories. */
                    public pageCategories: string[];

                    /** ConversationalSearchRequest conversationId. */
                    public conversationId: string;

                    /** ConversationalSearchRequest searchParams. */
                    public searchParams?: (google.cloud.retail.v2beta.ConversationalSearchRequest.ISearchParams|null);

                    /** ConversationalSearchRequest visitorId. */
                    public visitorId: string;

                    /** ConversationalSearchRequest userInfo. */
                    public userInfo?: (google.cloud.retail.v2beta.IUserInfo|null);

                    /** ConversationalSearchRequest conversationalFilteringSpec. */
                    public conversationalFilteringSpec?: (google.cloud.retail.v2beta.ConversationalSearchRequest.IConversationalFilteringSpec|null);

                    /** ConversationalSearchRequest userLabels. */
                    public userLabels: { [k: string]: string };

                    /** ConversationalSearchRequest safetySettings. */
                    public safetySettings: google.cloud.retail.v2beta.ISafetySetting[];

                    /**
                     * Creates a new ConversationalSearchRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ConversationalSearchRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IConversationalSearchRequest): google.cloud.retail.v2beta.ConversationalSearchRequest;

                    /**
                     * Encodes the specified ConversationalSearchRequest message. Does not implicitly {@link google.cloud.retail.v2beta.ConversationalSearchRequest.verify|verify} messages.
                     * @param message ConversationalSearchRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IConversationalSearchRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ConversationalSearchRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ConversationalSearchRequest.verify|verify} messages.
                     * @param message ConversationalSearchRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IConversationalSearchRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ConversationalSearchRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ConversationalSearchRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.ConversationalSearchRequest;

                    /**
                     * Decodes a ConversationalSearchRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ConversationalSearchRequest
                     * @throws {Error} If the payload 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.retail.v2beta.ConversationalSearchRequest;

                    /**
                     * Verifies a ConversationalSearchRequest message.
                     * @param message Plain 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 ConversationalSearchRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ConversationalSearchRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ConversationalSearchRequest;

                    /**
                     * Creates a plain object from a ConversationalSearchRequest message. Also converts values to other types if specified.
                     * @param message ConversationalSearchRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ConversationalSearchRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ConversationalSearchRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ConversationalSearchRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace ConversationalSearchRequest {

                    /** Properties of a SearchParams. */
                    interface ISearchParams {

                        /** SearchParams filter */
                        filter?: (string|null);

                        /** SearchParams canonicalFilter */
                        canonicalFilter?: (string|null);

                        /** SearchParams sortBy */
                        sortBy?: (string|null);

                        /** SearchParams boostSpec */
                        boostSpec?: (google.cloud.retail.v2beta.SearchRequest.IBoostSpec|null);
                    }

                    /** Represents a SearchParams. */
                    class SearchParams implements ISearchParams {

                        /**
                         * Constructs a new SearchParams.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.ConversationalSearchRequest.ISearchParams);

                        /** SearchParams filter. */
                        public filter: string;

                        /** SearchParams canonicalFilter. */
                        public canonicalFilter: string;

                        /** SearchParams sortBy. */
                        public sortBy: string;

                        /** SearchParams boostSpec. */
                        public boostSpec?: (google.cloud.retail.v2beta.SearchRequest.IBoostSpec|null);

                        /**
                         * Creates a new SearchParams instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns SearchParams instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.ConversationalSearchRequest.ISearchParams): google.cloud.retail.v2beta.ConversationalSearchRequest.SearchParams;

                        /**
                         * Encodes the specified SearchParams message. Does not implicitly {@link google.cloud.retail.v2beta.ConversationalSearchRequest.SearchParams.verify|verify} messages.
                         * @param message SearchParams message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.ConversationalSearchRequest.ISearchParams, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified SearchParams message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ConversationalSearchRequest.SearchParams.verify|verify} messages.
                         * @param message SearchParams message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.ConversationalSearchRequest.ISearchParams, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a SearchParams message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns SearchParams
                         * @throws {Error} If the payload is not 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.retail.v2beta.ConversationalSearchRequest.SearchParams;

                        /**
                         * Decodes a SearchParams message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns SearchParams
                         * @throws {Error} If the payload 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.retail.v2beta.ConversationalSearchRequest.SearchParams;

                        /**
                         * Verifies a SearchParams message.
                         * @param message Plain 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 SearchParams message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns SearchParams
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ConversationalSearchRequest.SearchParams;

                        /**
                         * Creates a plain object from a SearchParams message. Also converts values to other types if specified.
                         * @param message SearchParams
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.ConversationalSearchRequest.SearchParams, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this SearchParams to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for SearchParams
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a UserAnswer. */
                    interface IUserAnswer {

                        /** UserAnswer textAnswer */
                        textAnswer?: (string|null);

                        /** UserAnswer selectedAnswer */
                        selectedAnswer?: (google.cloud.retail.v2beta.ConversationalSearchRequest.UserAnswer.ISelectedAnswer|null);
                    }

                    /** Represents a UserAnswer. */
                    class UserAnswer implements IUserAnswer {

                        /**
                         * Constructs a new UserAnswer.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.ConversationalSearchRequest.IUserAnswer);

                        /** UserAnswer textAnswer. */
                        public textAnswer?: (string|null);

                        /** UserAnswer selectedAnswer. */
                        public selectedAnswer?: (google.cloud.retail.v2beta.ConversationalSearchRequest.UserAnswer.ISelectedAnswer|null);

                        /** UserAnswer type. */
                        public type?: ("textAnswer"|"selectedAnswer");

                        /**
                         * Creates a new UserAnswer instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns UserAnswer instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.ConversationalSearchRequest.IUserAnswer): google.cloud.retail.v2beta.ConversationalSearchRequest.UserAnswer;

                        /**
                         * Encodes the specified UserAnswer message. Does not implicitly {@link google.cloud.retail.v2beta.ConversationalSearchRequest.UserAnswer.verify|verify} messages.
                         * @param message UserAnswer message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.ConversationalSearchRequest.IUserAnswer, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified UserAnswer message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ConversationalSearchRequest.UserAnswer.verify|verify} messages.
                         * @param message UserAnswer message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.ConversationalSearchRequest.IUserAnswer, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a UserAnswer message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns UserAnswer
                         * @throws {Error} If the payload is not 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.retail.v2beta.ConversationalSearchRequest.UserAnswer;

                        /**
                         * Decodes a UserAnswer message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns UserAnswer
                         * @throws {Error} If the payload 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.retail.v2beta.ConversationalSearchRequest.UserAnswer;

                        /**
                         * Verifies a UserAnswer message.
                         * @param message Plain 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 UserAnswer message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns UserAnswer
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ConversationalSearchRequest.UserAnswer;

                        /**
                         * Creates a plain object from a UserAnswer message. Also converts values to other types if specified.
                         * @param message UserAnswer
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.ConversationalSearchRequest.UserAnswer, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this UserAnswer to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for UserAnswer
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace UserAnswer {

                        /** Properties of a SelectedAnswer. */
                        interface ISelectedAnswer {

                            /** SelectedAnswer productAttributeValue */
                            productAttributeValue?: (google.cloud.retail.v2beta.IProductAttributeValue|null);
                        }

                        /** Represents a SelectedAnswer. */
                        class SelectedAnswer implements ISelectedAnswer {

                            /**
                             * Constructs a new SelectedAnswer.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2beta.ConversationalSearchRequest.UserAnswer.ISelectedAnswer);

                            /** SelectedAnswer productAttributeValue. */
                            public productAttributeValue?: (google.cloud.retail.v2beta.IProductAttributeValue|null);

                            /**
                             * Creates a new SelectedAnswer instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns SelectedAnswer instance
                             */
                            public static create(properties?: google.cloud.retail.v2beta.ConversationalSearchRequest.UserAnswer.ISelectedAnswer): google.cloud.retail.v2beta.ConversationalSearchRequest.UserAnswer.SelectedAnswer;

                            /**
                             * Encodes the specified SelectedAnswer message. Does not implicitly {@link google.cloud.retail.v2beta.ConversationalSearchRequest.UserAnswer.SelectedAnswer.verify|verify} messages.
                             * @param message SelectedAnswer message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.retail.v2beta.ConversationalSearchRequest.UserAnswer.ISelectedAnswer, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified SelectedAnswer message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ConversationalSearchRequest.UserAnswer.SelectedAnswer.verify|verify} messages.
                             * @param message SelectedAnswer message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.retail.v2beta.ConversationalSearchRequest.UserAnswer.ISelectedAnswer, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a SelectedAnswer message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns SelectedAnswer
                             * @throws {Error} If the payload is not 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.retail.v2beta.ConversationalSearchRequest.UserAnswer.SelectedAnswer;

                            /**
                             * Decodes a SelectedAnswer message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns SelectedAnswer
                             * @throws {Error} If the payload 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.retail.v2beta.ConversationalSearchRequest.UserAnswer.SelectedAnswer;

                            /**
                             * Verifies a SelectedAnswer message.
                             * @param message Plain 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 SelectedAnswer message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns SelectedAnswer
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ConversationalSearchRequest.UserAnswer.SelectedAnswer;

                            /**
                             * Creates a plain object from a SelectedAnswer message. Also converts values to other types if specified.
                             * @param message SelectedAnswer
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.retail.v2beta.ConversationalSearchRequest.UserAnswer.SelectedAnswer, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this SelectedAnswer to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for SelectedAnswer
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a ConversationalFilteringSpec. */
                    interface IConversationalFilteringSpec {

                        /** ConversationalFilteringSpec enableConversationalFiltering */
                        enableConversationalFiltering?: (boolean|null);

                        /** ConversationalFilteringSpec userAnswer */
                        userAnswer?: (google.cloud.retail.v2beta.ConversationalSearchRequest.IUserAnswer|null);

                        /** ConversationalFilteringSpec conversationalFilteringMode */
                        conversationalFilteringMode?: (google.cloud.retail.v2beta.ConversationalSearchRequest.ConversationalFilteringSpec.Mode|keyof typeof google.cloud.retail.v2beta.ConversationalSearchRequest.ConversationalFilteringSpec.Mode|null);
                    }

                    /** Represents a ConversationalFilteringSpec. */
                    class ConversationalFilteringSpec implements IConversationalFilteringSpec {

                        /**
                         * Constructs a new ConversationalFilteringSpec.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.ConversationalSearchRequest.IConversationalFilteringSpec);

                        /** ConversationalFilteringSpec enableConversationalFiltering. */
                        public enableConversationalFiltering: boolean;

                        /** ConversationalFilteringSpec userAnswer. */
                        public userAnswer?: (google.cloud.retail.v2beta.ConversationalSearchRequest.IUserAnswer|null);

                        /** ConversationalFilteringSpec conversationalFilteringMode. */
                        public conversationalFilteringMode: (google.cloud.retail.v2beta.ConversationalSearchRequest.ConversationalFilteringSpec.Mode|keyof typeof google.cloud.retail.v2beta.ConversationalSearchRequest.ConversationalFilteringSpec.Mode);

                        /**
                         * Creates a new ConversationalFilteringSpec instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversationalFilteringSpec instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.ConversationalSearchRequest.IConversationalFilteringSpec): google.cloud.retail.v2beta.ConversationalSearchRequest.ConversationalFilteringSpec;

                        /**
                         * Encodes the specified ConversationalFilteringSpec message. Does not implicitly {@link google.cloud.retail.v2beta.ConversationalSearchRequest.ConversationalFilteringSpec.verify|verify} messages.
                         * @param message ConversationalFilteringSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.ConversationalSearchRequest.IConversationalFilteringSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversationalFilteringSpec message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ConversationalSearchRequest.ConversationalFilteringSpec.verify|verify} messages.
                         * @param message ConversationalFilteringSpec message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.ConversationalSearchRequest.IConversationalFilteringSpec, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversationalFilteringSpec message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversationalFilteringSpec
                         * @throws {Error} If the payload is not 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.retail.v2beta.ConversationalSearchRequest.ConversationalFilteringSpec;

                        /**
                         * Decodes a ConversationalFilteringSpec message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversationalFilteringSpec
                         * @throws {Error} If the payload 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.retail.v2beta.ConversationalSearchRequest.ConversationalFilteringSpec;

                        /**
                         * Verifies a ConversationalFilteringSpec message.
                         * @param message Plain 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 ConversationalFilteringSpec message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversationalFilteringSpec
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ConversationalSearchRequest.ConversationalFilteringSpec;

                        /**
                         * Creates a plain object from a ConversationalFilteringSpec message. Also converts values to other types if specified.
                         * @param message ConversationalFilteringSpec
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.ConversationalSearchRequest.ConversationalFilteringSpec, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversationalFilteringSpec to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversationalFilteringSpec
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ConversationalFilteringSpec {

                        /** Mode enum. */
                        enum Mode {
                            MODE_UNSPECIFIED = 0,
                            DISABLED = 1,
                            ENABLED = 2,
                            CONVERSATIONAL_FILTER_ONLY = 3
                        }
                    }
                }

                /** Properties of a ConversationalSearchResponse. */
                interface IConversationalSearchResponse {

                    /** ConversationalSearchResponse userQueryTypes */
                    userQueryTypes?: (string[]|null);

                    /** ConversationalSearchResponse conversationalTextResponse */
                    conversationalTextResponse?: (string|null);

                    /** ConversationalSearchResponse followupQuestion */
                    followupQuestion?: (google.cloud.retail.v2beta.ConversationalSearchResponse.IFollowupQuestion|null);

                    /** ConversationalSearchResponse conversationId */
                    conversationId?: (string|null);

                    /** ConversationalSearchResponse refinedSearch */
                    refinedSearch?: (google.cloud.retail.v2beta.ConversationalSearchResponse.IRefinedSearch[]|null);

                    /** ConversationalSearchResponse conversationalFilteringResult */
                    conversationalFilteringResult?: (google.cloud.retail.v2beta.ConversationalSearchResponse.IConversationalFilteringResult|null);

                    /** ConversationalSearchResponse state */
                    state?: (google.cloud.retail.v2beta.ConversationalSearchResponse.State|keyof typeof google.cloud.retail.v2beta.ConversationalSearchResponse.State|null);
                }

                /** Represents a ConversationalSearchResponse. */
                class ConversationalSearchResponse implements IConversationalSearchResponse {

                    /**
                     * Constructs a new ConversationalSearchResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IConversationalSearchResponse);

                    /** ConversationalSearchResponse userQueryTypes. */
                    public userQueryTypes: string[];

                    /** ConversationalSearchResponse conversationalTextResponse. */
                    public conversationalTextResponse: string;

                    /** ConversationalSearchResponse followupQuestion. */
                    public followupQuestion?: (google.cloud.retail.v2beta.ConversationalSearchResponse.IFollowupQuestion|null);

                    /** ConversationalSearchResponse conversationId. */
                    public conversationId: string;

                    /** ConversationalSearchResponse refinedSearch. */
                    public refinedSearch: google.cloud.retail.v2beta.ConversationalSearchResponse.IRefinedSearch[];

                    /** ConversationalSearchResponse conversationalFilteringResult. */
                    public conversationalFilteringResult?: (google.cloud.retail.v2beta.ConversationalSearchResponse.IConversationalFilteringResult|null);

                    /** ConversationalSearchResponse state. */
                    public state: (google.cloud.retail.v2beta.ConversationalSearchResponse.State|keyof typeof google.cloud.retail.v2beta.ConversationalSearchResponse.State);

                    /**
                     * Creates a new ConversationalSearchResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ConversationalSearchResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IConversationalSearchResponse): google.cloud.retail.v2beta.ConversationalSearchResponse;

                    /**
                     * Encodes the specified ConversationalSearchResponse message. Does not implicitly {@link google.cloud.retail.v2beta.ConversationalSearchResponse.verify|verify} messages.
                     * @param message ConversationalSearchResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IConversationalSearchResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ConversationalSearchResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ConversationalSearchResponse.verify|verify} messages.
                     * @param message ConversationalSearchResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IConversationalSearchResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ConversationalSearchResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ConversationalSearchResponse
                     * @throws {Error} If the payload is not 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.retail.v2beta.ConversationalSearchResponse;

                    /**
                     * Decodes a ConversationalSearchResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ConversationalSearchResponse
                     * @throws {Error} If the payload 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.retail.v2beta.ConversationalSearchResponse;

                    /**
                     * Verifies a ConversationalSearchResponse message.
                     * @param message Plain 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 ConversationalSearchResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ConversationalSearchResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ConversationalSearchResponse;

                    /**
                     * Creates a plain object from a ConversationalSearchResponse message. Also converts values to other types if specified.
                     * @param message ConversationalSearchResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ConversationalSearchResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ConversationalSearchResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ConversationalSearchResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace ConversationalSearchResponse {

                    /** Properties of a FollowupQuestion. */
                    interface IFollowupQuestion {

                        /** FollowupQuestion followupQuestion */
                        followupQuestion?: (string|null);

                        /** FollowupQuestion suggestedAnswers */
                        suggestedAnswers?: (google.cloud.retail.v2beta.ConversationalSearchResponse.FollowupQuestion.ISuggestedAnswer[]|null);
                    }

                    /** Represents a FollowupQuestion. */
                    class FollowupQuestion implements IFollowupQuestion {

                        /**
                         * Constructs a new FollowupQuestion.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.ConversationalSearchResponse.IFollowupQuestion);

                        /** FollowupQuestion followupQuestion. */
                        public followupQuestion: string;

                        /** FollowupQuestion suggestedAnswers. */
                        public suggestedAnswers: google.cloud.retail.v2beta.ConversationalSearchResponse.FollowupQuestion.ISuggestedAnswer[];

                        /**
                         * Creates a new FollowupQuestion instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FollowupQuestion instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.ConversationalSearchResponse.IFollowupQuestion): google.cloud.retail.v2beta.ConversationalSearchResponse.FollowupQuestion;

                        /**
                         * Encodes the specified FollowupQuestion message. Does not implicitly {@link google.cloud.retail.v2beta.ConversationalSearchResponse.FollowupQuestion.verify|verify} messages.
                         * @param message FollowupQuestion message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.ConversationalSearchResponse.IFollowupQuestion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FollowupQuestion message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ConversationalSearchResponse.FollowupQuestion.verify|verify} messages.
                         * @param message FollowupQuestion message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.ConversationalSearchResponse.IFollowupQuestion, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FollowupQuestion message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FollowupQuestion
                         * @throws {Error} If the payload is not 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.retail.v2beta.ConversationalSearchResponse.FollowupQuestion;

                        /**
                         * Decodes a FollowupQuestion message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FollowupQuestion
                         * @throws {Error} If the payload 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.retail.v2beta.ConversationalSearchResponse.FollowupQuestion;

                        /**
                         * Verifies a FollowupQuestion message.
                         * @param message Plain 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 FollowupQuestion message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FollowupQuestion
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ConversationalSearchResponse.FollowupQuestion;

                        /**
                         * Creates a plain object from a FollowupQuestion message. Also converts values to other types if specified.
                         * @param message FollowupQuestion
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.ConversationalSearchResponse.FollowupQuestion, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FollowupQuestion to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FollowupQuestion
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace FollowupQuestion {

                        /** Properties of a SuggestedAnswer. */
                        interface ISuggestedAnswer {

                            /** SuggestedAnswer productAttributeValue */
                            productAttributeValue?: (google.cloud.retail.v2beta.IProductAttributeValue|null);
                        }

                        /** Represents a SuggestedAnswer. */
                        class SuggestedAnswer implements ISuggestedAnswer {

                            /**
                             * Constructs a new SuggestedAnswer.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2beta.ConversationalSearchResponse.FollowupQuestion.ISuggestedAnswer);

                            /** SuggestedAnswer productAttributeValue. */
                            public productAttributeValue?: (google.cloud.retail.v2beta.IProductAttributeValue|null);

                            /**
                             * Creates a new SuggestedAnswer instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns SuggestedAnswer instance
                             */
                            public static create(properties?: google.cloud.retail.v2beta.ConversationalSearchResponse.FollowupQuestion.ISuggestedAnswer): google.cloud.retail.v2beta.ConversationalSearchResponse.FollowupQuestion.SuggestedAnswer;

                            /**
                             * Encodes the specified SuggestedAnswer message. Does not implicitly {@link google.cloud.retail.v2beta.ConversationalSearchResponse.FollowupQuestion.SuggestedAnswer.verify|verify} messages.
                             * @param message SuggestedAnswer message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.retail.v2beta.ConversationalSearchResponse.FollowupQuestion.ISuggestedAnswer, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified SuggestedAnswer message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ConversationalSearchResponse.FollowupQuestion.SuggestedAnswer.verify|verify} messages.
                             * @param message SuggestedAnswer message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.retail.v2beta.ConversationalSearchResponse.FollowupQuestion.ISuggestedAnswer, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a SuggestedAnswer message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns SuggestedAnswer
                             * @throws {Error} If the payload is not 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.retail.v2beta.ConversationalSearchResponse.FollowupQuestion.SuggestedAnswer;

                            /**
                             * Decodes a SuggestedAnswer message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns SuggestedAnswer
                             * @throws {Error} If the payload 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.retail.v2beta.ConversationalSearchResponse.FollowupQuestion.SuggestedAnswer;

                            /**
                             * Verifies a SuggestedAnswer message.
                             * @param message Plain 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 SuggestedAnswer message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns SuggestedAnswer
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ConversationalSearchResponse.FollowupQuestion.SuggestedAnswer;

                            /**
                             * Creates a plain object from a SuggestedAnswer message. Also converts values to other types if specified.
                             * @param message SuggestedAnswer
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.retail.v2beta.ConversationalSearchResponse.FollowupQuestion.SuggestedAnswer, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this SuggestedAnswer to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for SuggestedAnswer
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** Properties of a RefinedSearch. */
                    interface IRefinedSearch {

                        /** RefinedSearch query */
                        query?: (string|null);
                    }

                    /** Represents a RefinedSearch. */
                    class RefinedSearch implements IRefinedSearch {

                        /**
                         * Constructs a new RefinedSearch.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.ConversationalSearchResponse.IRefinedSearch);

                        /** RefinedSearch query. */
                        public query: string;

                        /**
                         * Creates a new RefinedSearch instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns RefinedSearch instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.ConversationalSearchResponse.IRefinedSearch): google.cloud.retail.v2beta.ConversationalSearchResponse.RefinedSearch;

                        /**
                         * Encodes the specified RefinedSearch message. Does not implicitly {@link google.cloud.retail.v2beta.ConversationalSearchResponse.RefinedSearch.verify|verify} messages.
                         * @param message RefinedSearch message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.ConversationalSearchResponse.IRefinedSearch, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified RefinedSearch message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ConversationalSearchResponse.RefinedSearch.verify|verify} messages.
                         * @param message RefinedSearch message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.ConversationalSearchResponse.IRefinedSearch, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a RefinedSearch message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns RefinedSearch
                         * @throws {Error} If the payload is not 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.retail.v2beta.ConversationalSearchResponse.RefinedSearch;

                        /**
                         * Decodes a RefinedSearch message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns RefinedSearch
                         * @throws {Error} If the payload 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.retail.v2beta.ConversationalSearchResponse.RefinedSearch;

                        /**
                         * Verifies a RefinedSearch message.
                         * @param message Plain 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 RefinedSearch message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns RefinedSearch
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ConversationalSearchResponse.RefinedSearch;

                        /**
                         * Creates a plain object from a RefinedSearch message. Also converts values to other types if specified.
                         * @param message RefinedSearch
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.ConversationalSearchResponse.RefinedSearch, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this RefinedSearch to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for RefinedSearch
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ConversationalFilteringResult. */
                    interface IConversationalFilteringResult {

                        /** ConversationalFilteringResult followupQuestion */
                        followupQuestion?: (google.cloud.retail.v2beta.ConversationalSearchResponse.IFollowupQuestion|null);

                        /** ConversationalFilteringResult additionalFilter */
                        additionalFilter?: (google.cloud.retail.v2beta.ConversationalSearchResponse.ConversationalFilteringResult.IAdditionalFilter|null);
                    }

                    /** Represents a ConversationalFilteringResult. */
                    class ConversationalFilteringResult implements IConversationalFilteringResult {

                        /**
                         * Constructs a new ConversationalFilteringResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.ConversationalSearchResponse.IConversationalFilteringResult);

                        /** ConversationalFilteringResult followupQuestion. */
                        public followupQuestion?: (google.cloud.retail.v2beta.ConversationalSearchResponse.IFollowupQuestion|null);

                        /** ConversationalFilteringResult additionalFilter. */
                        public additionalFilter?: (google.cloud.retail.v2beta.ConversationalSearchResponse.ConversationalFilteringResult.IAdditionalFilter|null);

                        /**
                         * Creates a new ConversationalFilteringResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ConversationalFilteringResult instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.ConversationalSearchResponse.IConversationalFilteringResult): google.cloud.retail.v2beta.ConversationalSearchResponse.ConversationalFilteringResult;

                        /**
                         * Encodes the specified ConversationalFilteringResult message. Does not implicitly {@link google.cloud.retail.v2beta.ConversationalSearchResponse.ConversationalFilteringResult.verify|verify} messages.
                         * @param message ConversationalFilteringResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.ConversationalSearchResponse.IConversationalFilteringResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ConversationalFilteringResult message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ConversationalSearchResponse.ConversationalFilteringResult.verify|verify} messages.
                         * @param message ConversationalFilteringResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.ConversationalSearchResponse.IConversationalFilteringResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ConversationalFilteringResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ConversationalFilteringResult
                         * @throws {Error} If the payload is not 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.retail.v2beta.ConversationalSearchResponse.ConversationalFilteringResult;

                        /**
                         * Decodes a ConversationalFilteringResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ConversationalFilteringResult
                         * @throws {Error} If the payload 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.retail.v2beta.ConversationalSearchResponse.ConversationalFilteringResult;

                        /**
                         * Verifies a ConversationalFilteringResult message.
                         * @param message Plain 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 ConversationalFilteringResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ConversationalFilteringResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ConversationalSearchResponse.ConversationalFilteringResult;

                        /**
                         * Creates a plain object from a ConversationalFilteringResult message. Also converts values to other types if specified.
                         * @param message ConversationalFilteringResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.ConversationalSearchResponse.ConversationalFilteringResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ConversationalFilteringResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ConversationalFilteringResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace ConversationalFilteringResult {

                        /** Properties of an AdditionalFilter. */
                        interface IAdditionalFilter {

                            /** AdditionalFilter productAttributeValue */
                            productAttributeValue?: (google.cloud.retail.v2beta.IProductAttributeValue|null);
                        }

                        /** Represents an AdditionalFilter. */
                        class AdditionalFilter implements IAdditionalFilter {

                            /**
                             * Constructs a new AdditionalFilter.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2beta.ConversationalSearchResponse.ConversationalFilteringResult.IAdditionalFilter);

                            /** AdditionalFilter productAttributeValue. */
                            public productAttributeValue?: (google.cloud.retail.v2beta.IProductAttributeValue|null);

                            /**
                             * Creates a new AdditionalFilter instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns AdditionalFilter instance
                             */
                            public static create(properties?: google.cloud.retail.v2beta.ConversationalSearchResponse.ConversationalFilteringResult.IAdditionalFilter): google.cloud.retail.v2beta.ConversationalSearchResponse.ConversationalFilteringResult.AdditionalFilter;

                            /**
                             * Encodes the specified AdditionalFilter message. Does not implicitly {@link google.cloud.retail.v2beta.ConversationalSearchResponse.ConversationalFilteringResult.AdditionalFilter.verify|verify} messages.
                             * @param message AdditionalFilter message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.retail.v2beta.ConversationalSearchResponse.ConversationalFilteringResult.IAdditionalFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified AdditionalFilter message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ConversationalSearchResponse.ConversationalFilteringResult.AdditionalFilter.verify|verify} messages.
                             * @param message AdditionalFilter message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.retail.v2beta.ConversationalSearchResponse.ConversationalFilteringResult.IAdditionalFilter, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes an AdditionalFilter message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns AdditionalFilter
                             * @throws {Error} If the payload is not 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.retail.v2beta.ConversationalSearchResponse.ConversationalFilteringResult.AdditionalFilter;

                            /**
                             * Decodes an AdditionalFilter message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns AdditionalFilter
                             * @throws {Error} If the payload 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.retail.v2beta.ConversationalSearchResponse.ConversationalFilteringResult.AdditionalFilter;

                            /**
                             * Verifies an AdditionalFilter message.
                             * @param message Plain 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 AdditionalFilter message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns AdditionalFilter
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ConversationalSearchResponse.ConversationalFilteringResult.AdditionalFilter;

                            /**
                             * Creates a plain object from an AdditionalFilter message. Also converts values to other types if specified.
                             * @param message AdditionalFilter
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.retail.v2beta.ConversationalSearchResponse.ConversationalFilteringResult.AdditionalFilter, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this AdditionalFilter to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for AdditionalFilter
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }
                    }

                    /** State enum. */
                    enum State {
                        STATE_UNSPECIFIED = 0,
                        STREAMING = 1,
                        SUCCEEDED = 2
                    }
                }

                /** HarmCategory enum. */
                enum HarmCategory {
                    HARM_CATEGORY_UNSPECIFIED = 0,
                    HARM_CATEGORY_HATE_SPEECH = 1,
                    HARM_CATEGORY_DANGEROUS_CONTENT = 2,
                    HARM_CATEGORY_HARASSMENT = 3,
                    HARM_CATEGORY_SEXUALLY_EXPLICIT = 4,
                    HARM_CATEGORY_CIVIC_INTEGRITY = 5
                }

                /** Properties of a SafetySetting. */
                interface ISafetySetting {

                    /** SafetySetting category */
                    category?: (google.cloud.retail.v2beta.HarmCategory|keyof typeof google.cloud.retail.v2beta.HarmCategory|null);

                    /** SafetySetting threshold */
                    threshold?: (google.cloud.retail.v2beta.SafetySetting.HarmBlockThreshold|keyof typeof google.cloud.retail.v2beta.SafetySetting.HarmBlockThreshold|null);

                    /** SafetySetting method */
                    method?: (google.cloud.retail.v2beta.SafetySetting.HarmBlockMethod|keyof typeof google.cloud.retail.v2beta.SafetySetting.HarmBlockMethod|null);
                }

                /** Represents a SafetySetting. */
                class SafetySetting implements ISafetySetting {

                    /**
                     * Constructs a new SafetySetting.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.ISafetySetting);

                    /** SafetySetting category. */
                    public category: (google.cloud.retail.v2beta.HarmCategory|keyof typeof google.cloud.retail.v2beta.HarmCategory);

                    /** SafetySetting threshold. */
                    public threshold: (google.cloud.retail.v2beta.SafetySetting.HarmBlockThreshold|keyof typeof google.cloud.retail.v2beta.SafetySetting.HarmBlockThreshold);

                    /** SafetySetting method. */
                    public method: (google.cloud.retail.v2beta.SafetySetting.HarmBlockMethod|keyof typeof google.cloud.retail.v2beta.SafetySetting.HarmBlockMethod);

                    /**
                     * Creates a new SafetySetting instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SafetySetting instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.ISafetySetting): google.cloud.retail.v2beta.SafetySetting;

                    /**
                     * Encodes the specified SafetySetting message. Does not implicitly {@link google.cloud.retail.v2beta.SafetySetting.verify|verify} messages.
                     * @param message SafetySetting message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.ISafetySetting, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SafetySetting message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.SafetySetting.verify|verify} messages.
                     * @param message SafetySetting message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.ISafetySetting, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SafetySetting message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SafetySetting
                     * @throws {Error} If the payload is not 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.retail.v2beta.SafetySetting;

                    /**
                     * Decodes a SafetySetting message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SafetySetting
                     * @throws {Error} If the payload 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.retail.v2beta.SafetySetting;

                    /**
                     * Verifies a SafetySetting message.
                     * @param message Plain 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 SafetySetting message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SafetySetting
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.SafetySetting;

                    /**
                     * Creates a plain object from a SafetySetting message. Also converts values to other types if specified.
                     * @param message SafetySetting
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.SafetySetting, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SafetySetting to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SafetySetting
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace SafetySetting {

                    /** HarmBlockThreshold enum. */
                    enum HarmBlockThreshold {
                        HARM_BLOCK_THRESHOLD_UNSPECIFIED = 0,
                        BLOCK_LOW_AND_ABOVE = 1,
                        BLOCK_MEDIUM_AND_ABOVE = 2,
                        BLOCK_ONLY_HIGH = 3,
                        BLOCK_NONE = 4,
                        OFF = 5
                    }

                    /** HarmBlockMethod enum. */
                    enum HarmBlockMethod {
                        HARM_BLOCK_METHOD_UNSPECIFIED = 0,
                        SEVERITY = 1,
                        PROBABILITY = 2
                    }
                }

                /** Properties of a GenerativeQuestionsFeatureConfig. */
                interface IGenerativeQuestionsFeatureConfig {

                    /** GenerativeQuestionsFeatureConfig catalog */
                    catalog?: (string|null);

                    /** GenerativeQuestionsFeatureConfig featureEnabled */
                    featureEnabled?: (boolean|null);

                    /** GenerativeQuestionsFeatureConfig minimumProducts */
                    minimumProducts?: (number|null);
                }

                /** Represents a GenerativeQuestionsFeatureConfig. */
                class GenerativeQuestionsFeatureConfig implements IGenerativeQuestionsFeatureConfig {

                    /**
                     * Constructs a new GenerativeQuestionsFeatureConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IGenerativeQuestionsFeatureConfig);

                    /** GenerativeQuestionsFeatureConfig catalog. */
                    public catalog: string;

                    /** GenerativeQuestionsFeatureConfig featureEnabled. */
                    public featureEnabled: boolean;

                    /** GenerativeQuestionsFeatureConfig minimumProducts. */
                    public minimumProducts: number;

                    /**
                     * Creates a new GenerativeQuestionsFeatureConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GenerativeQuestionsFeatureConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IGenerativeQuestionsFeatureConfig): google.cloud.retail.v2beta.GenerativeQuestionsFeatureConfig;

                    /**
                     * Encodes the specified GenerativeQuestionsFeatureConfig message. Does not implicitly {@link google.cloud.retail.v2beta.GenerativeQuestionsFeatureConfig.verify|verify} messages.
                     * @param message GenerativeQuestionsFeatureConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IGenerativeQuestionsFeatureConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GenerativeQuestionsFeatureConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.GenerativeQuestionsFeatureConfig.verify|verify} messages.
                     * @param message GenerativeQuestionsFeatureConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IGenerativeQuestionsFeatureConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GenerativeQuestionsFeatureConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GenerativeQuestionsFeatureConfig
                     * @throws {Error} If the payload is not 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.retail.v2beta.GenerativeQuestionsFeatureConfig;

                    /**
                     * Decodes a GenerativeQuestionsFeatureConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GenerativeQuestionsFeatureConfig
                     * @throws {Error} If the payload 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.retail.v2beta.GenerativeQuestionsFeatureConfig;

                    /**
                     * Verifies a GenerativeQuestionsFeatureConfig message.
                     * @param message Plain 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 GenerativeQuestionsFeatureConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GenerativeQuestionsFeatureConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.GenerativeQuestionsFeatureConfig;

                    /**
                     * Creates a plain object from a GenerativeQuestionsFeatureConfig message. Also converts values to other types if specified.
                     * @param message GenerativeQuestionsFeatureConfig
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.GenerativeQuestionsFeatureConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GenerativeQuestionsFeatureConfig to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GenerativeQuestionsFeatureConfig
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GenerativeQuestionConfig. */
                interface IGenerativeQuestionConfig {

                    /** GenerativeQuestionConfig catalog */
                    catalog?: (string|null);

                    /** GenerativeQuestionConfig facet */
                    facet?: (string|null);

                    /** GenerativeQuestionConfig generatedQuestion */
                    generatedQuestion?: (string|null);

                    /** GenerativeQuestionConfig finalQuestion */
                    finalQuestion?: (string|null);

                    /** GenerativeQuestionConfig exampleValues */
                    exampleValues?: (string[]|null);

                    /** GenerativeQuestionConfig frequency */
                    frequency?: (number|null);

                    /** GenerativeQuestionConfig allowedInConversation */
                    allowedInConversation?: (boolean|null);
                }

                /** Represents a GenerativeQuestionConfig. */
                class GenerativeQuestionConfig implements IGenerativeQuestionConfig {

                    /**
                     * Constructs a new GenerativeQuestionConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IGenerativeQuestionConfig);

                    /** GenerativeQuestionConfig catalog. */
                    public catalog: string;

                    /** GenerativeQuestionConfig facet. */
                    public facet: string;

                    /** GenerativeQuestionConfig generatedQuestion. */
                    public generatedQuestion: string;

                    /** GenerativeQuestionConfig finalQuestion. */
                    public finalQuestion: string;

                    /** GenerativeQuestionConfig exampleValues. */
                    public exampleValues: string[];

                    /** GenerativeQuestionConfig frequency. */
                    public frequency: number;

                    /** GenerativeQuestionConfig allowedInConversation. */
                    public allowedInConversation: boolean;

                    /**
                     * Creates a new GenerativeQuestionConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GenerativeQuestionConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IGenerativeQuestionConfig): google.cloud.retail.v2beta.GenerativeQuestionConfig;

                    /**
                     * Encodes the specified GenerativeQuestionConfig message. Does not implicitly {@link google.cloud.retail.v2beta.GenerativeQuestionConfig.verify|verify} messages.
                     * @param message GenerativeQuestionConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IGenerativeQuestionConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GenerativeQuestionConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.GenerativeQuestionConfig.verify|verify} messages.
                     * @param message GenerativeQuestionConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IGenerativeQuestionConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GenerativeQuestionConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GenerativeQuestionConfig
                     * @throws {Error} If the payload is not 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.retail.v2beta.GenerativeQuestionConfig;

                    /**
                     * Decodes a GenerativeQuestionConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GenerativeQuestionConfig
                     * @throws {Error} If the payload 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.retail.v2beta.GenerativeQuestionConfig;

                    /**
                     * Verifies a GenerativeQuestionConfig message.
                     * @param message Plain 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 GenerativeQuestionConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GenerativeQuestionConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.GenerativeQuestionConfig;

                    /**
                     * Creates a plain object from a GenerativeQuestionConfig message. Also converts values to other types if specified.
                     * @param message GenerativeQuestionConfig
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.GenerativeQuestionConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GenerativeQuestionConfig to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GenerativeQuestionConfig
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Represents a GenerativeQuestionService */
                class GenerativeQuestionService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new GenerativeQuestionService 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 GenerativeQuestionService 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): GenerativeQuestionService;

                    /**
                     * Calls UpdateGenerativeQuestionsFeatureConfig.
                     * @param request UpdateGenerativeQuestionsFeatureConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and GenerativeQuestionsFeatureConfig
                     */
                    public updateGenerativeQuestionsFeatureConfig(request: google.cloud.retail.v2beta.IUpdateGenerativeQuestionsFeatureConfigRequest, callback: google.cloud.retail.v2beta.GenerativeQuestionService.UpdateGenerativeQuestionsFeatureConfigCallback): void;

                    /**
                     * Calls UpdateGenerativeQuestionsFeatureConfig.
                     * @param request UpdateGenerativeQuestionsFeatureConfigRequest message or plain object
                     * @returns Promise
                     */
                    public updateGenerativeQuestionsFeatureConfig(request: google.cloud.retail.v2beta.IUpdateGenerativeQuestionsFeatureConfigRequest): Promise<google.cloud.retail.v2beta.GenerativeQuestionsFeatureConfig>;

                    /**
                     * Calls GetGenerativeQuestionsFeatureConfig.
                     * @param request GetGenerativeQuestionsFeatureConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and GenerativeQuestionsFeatureConfig
                     */
                    public getGenerativeQuestionsFeatureConfig(request: google.cloud.retail.v2beta.IGetGenerativeQuestionsFeatureConfigRequest, callback: google.cloud.retail.v2beta.GenerativeQuestionService.GetGenerativeQuestionsFeatureConfigCallback): void;

                    /**
                     * Calls GetGenerativeQuestionsFeatureConfig.
                     * @param request GetGenerativeQuestionsFeatureConfigRequest message or plain object
                     * @returns Promise
                     */
                    public getGenerativeQuestionsFeatureConfig(request: google.cloud.retail.v2beta.IGetGenerativeQuestionsFeatureConfigRequest): Promise<google.cloud.retail.v2beta.GenerativeQuestionsFeatureConfig>;

                    /**
                     * Calls ListGenerativeQuestionConfigs.
                     * @param request ListGenerativeQuestionConfigsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListGenerativeQuestionConfigsResponse
                     */
                    public listGenerativeQuestionConfigs(request: google.cloud.retail.v2beta.IListGenerativeQuestionConfigsRequest, callback: google.cloud.retail.v2beta.GenerativeQuestionService.ListGenerativeQuestionConfigsCallback): void;

                    /**
                     * Calls ListGenerativeQuestionConfigs.
                     * @param request ListGenerativeQuestionConfigsRequest message or plain object
                     * @returns Promise
                     */
                    public listGenerativeQuestionConfigs(request: google.cloud.retail.v2beta.IListGenerativeQuestionConfigsRequest): Promise<google.cloud.retail.v2beta.ListGenerativeQuestionConfigsResponse>;

                    /**
                     * Calls UpdateGenerativeQuestionConfig.
                     * @param request UpdateGenerativeQuestionConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and GenerativeQuestionConfig
                     */
                    public updateGenerativeQuestionConfig(request: google.cloud.retail.v2beta.IUpdateGenerativeQuestionConfigRequest, callback: google.cloud.retail.v2beta.GenerativeQuestionService.UpdateGenerativeQuestionConfigCallback): void;

                    /**
                     * Calls UpdateGenerativeQuestionConfig.
                     * @param request UpdateGenerativeQuestionConfigRequest message or plain object
                     * @returns Promise
                     */
                    public updateGenerativeQuestionConfig(request: google.cloud.retail.v2beta.IUpdateGenerativeQuestionConfigRequest): Promise<google.cloud.retail.v2beta.GenerativeQuestionConfig>;

                    /**
                     * Calls BatchUpdateGenerativeQuestionConfigs.
                     * @param request BatchUpdateGenerativeQuestionConfigsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and BatchUpdateGenerativeQuestionConfigsResponse
                     */
                    public batchUpdateGenerativeQuestionConfigs(request: google.cloud.retail.v2beta.IBatchUpdateGenerativeQuestionConfigsRequest, callback: google.cloud.retail.v2beta.GenerativeQuestionService.BatchUpdateGenerativeQuestionConfigsCallback): void;

                    /**
                     * Calls BatchUpdateGenerativeQuestionConfigs.
                     * @param request BatchUpdateGenerativeQuestionConfigsRequest message or plain object
                     * @returns Promise
                     */
                    public batchUpdateGenerativeQuestionConfigs(request: google.cloud.retail.v2beta.IBatchUpdateGenerativeQuestionConfigsRequest): Promise<google.cloud.retail.v2beta.BatchUpdateGenerativeQuestionConfigsResponse>;
                }

                namespace GenerativeQuestionService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.GenerativeQuestionService|updateGenerativeQuestionsFeatureConfig}.
                     * @param error Error, if any
                     * @param [response] GenerativeQuestionsFeatureConfig
                     */
                    type UpdateGenerativeQuestionsFeatureConfigCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.GenerativeQuestionsFeatureConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.GenerativeQuestionService|getGenerativeQuestionsFeatureConfig}.
                     * @param error Error, if any
                     * @param [response] GenerativeQuestionsFeatureConfig
                     */
                    type GetGenerativeQuestionsFeatureConfigCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.GenerativeQuestionsFeatureConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.GenerativeQuestionService|listGenerativeQuestionConfigs}.
                     * @param error Error, if any
                     * @param [response] ListGenerativeQuestionConfigsResponse
                     */
                    type ListGenerativeQuestionConfigsCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.ListGenerativeQuestionConfigsResponse) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.GenerativeQuestionService|updateGenerativeQuestionConfig}.
                     * @param error Error, if any
                     * @param [response] GenerativeQuestionConfig
                     */
                    type UpdateGenerativeQuestionConfigCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.GenerativeQuestionConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.GenerativeQuestionService|batchUpdateGenerativeQuestionConfigs}.
                     * @param error Error, if any
                     * @param [response] BatchUpdateGenerativeQuestionConfigsResponse
                     */
                    type BatchUpdateGenerativeQuestionConfigsCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.BatchUpdateGenerativeQuestionConfigsResponse) => void;
                }

                /** Properties of an UpdateGenerativeQuestionsFeatureConfigRequest. */
                interface IUpdateGenerativeQuestionsFeatureConfigRequest {

                    /** UpdateGenerativeQuestionsFeatureConfigRequest generativeQuestionsFeatureConfig */
                    generativeQuestionsFeatureConfig?: (google.cloud.retail.v2beta.IGenerativeQuestionsFeatureConfig|null);

                    /** UpdateGenerativeQuestionsFeatureConfigRequest updateMask */
                    updateMask?: (google.protobuf.IFieldMask|null);
                }

                /** Represents an UpdateGenerativeQuestionsFeatureConfigRequest. */
                class UpdateGenerativeQuestionsFeatureConfigRequest implements IUpdateGenerativeQuestionsFeatureConfigRequest {

                    /**
                     * Constructs a new UpdateGenerativeQuestionsFeatureConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IUpdateGenerativeQuestionsFeatureConfigRequest);

                    /** UpdateGenerativeQuestionsFeatureConfigRequest generativeQuestionsFeatureConfig. */
                    public generativeQuestionsFeatureConfig?: (google.cloud.retail.v2beta.IGenerativeQuestionsFeatureConfig|null);

                    /** UpdateGenerativeQuestionsFeatureConfigRequest updateMask. */
                    public updateMask?: (google.protobuf.IFieldMask|null);

                    /**
                     * Creates a new UpdateGenerativeQuestionsFeatureConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateGenerativeQuestionsFeatureConfigRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IUpdateGenerativeQuestionsFeatureConfigRequest): google.cloud.retail.v2beta.UpdateGenerativeQuestionsFeatureConfigRequest;

                    /**
                     * Encodes the specified UpdateGenerativeQuestionsFeatureConfigRequest message. Does not implicitly {@link google.cloud.retail.v2beta.UpdateGenerativeQuestionsFeatureConfigRequest.verify|verify} messages.
                     * @param message UpdateGenerativeQuestionsFeatureConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IUpdateGenerativeQuestionsFeatureConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateGenerativeQuestionsFeatureConfigRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.UpdateGenerativeQuestionsFeatureConfigRequest.verify|verify} messages.
                     * @param message UpdateGenerativeQuestionsFeatureConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IUpdateGenerativeQuestionsFeatureConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateGenerativeQuestionsFeatureConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateGenerativeQuestionsFeatureConfigRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.UpdateGenerativeQuestionsFeatureConfigRequest;

                    /**
                     * Decodes an UpdateGenerativeQuestionsFeatureConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateGenerativeQuestionsFeatureConfigRequest
                     * @throws {Error} If the payload 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.retail.v2beta.UpdateGenerativeQuestionsFeatureConfigRequest;

                    /**
                     * Verifies an UpdateGenerativeQuestionsFeatureConfigRequest message.
                     * @param message Plain 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 UpdateGenerativeQuestionsFeatureConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateGenerativeQuestionsFeatureConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.UpdateGenerativeQuestionsFeatureConfigRequest;

                    /**
                     * Creates a plain object from an UpdateGenerativeQuestionsFeatureConfigRequest message. Also converts values to other types if specified.
                     * @param message UpdateGenerativeQuestionsFeatureConfigRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.UpdateGenerativeQuestionsFeatureConfigRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateGenerativeQuestionsFeatureConfigRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateGenerativeQuestionsFeatureConfigRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetGenerativeQuestionsFeatureConfigRequest. */
                interface IGetGenerativeQuestionsFeatureConfigRequest {

                    /** GetGenerativeQuestionsFeatureConfigRequest catalog */
                    catalog?: (string|null);
                }

                /** Represents a GetGenerativeQuestionsFeatureConfigRequest. */
                class GetGenerativeQuestionsFeatureConfigRequest implements IGetGenerativeQuestionsFeatureConfigRequest {

                    /**
                     * Constructs a new GetGenerativeQuestionsFeatureConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IGetGenerativeQuestionsFeatureConfigRequest);

                    /** GetGenerativeQuestionsFeatureConfigRequest catalog. */
                    public catalog: string;

                    /**
                     * Creates a new GetGenerativeQuestionsFeatureConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetGenerativeQuestionsFeatureConfigRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IGetGenerativeQuestionsFeatureConfigRequest): google.cloud.retail.v2beta.GetGenerativeQuestionsFeatureConfigRequest;

                    /**
                     * Encodes the specified GetGenerativeQuestionsFeatureConfigRequest message. Does not implicitly {@link google.cloud.retail.v2beta.GetGenerativeQuestionsFeatureConfigRequest.verify|verify} messages.
                     * @param message GetGenerativeQuestionsFeatureConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IGetGenerativeQuestionsFeatureConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetGenerativeQuestionsFeatureConfigRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.GetGenerativeQuestionsFeatureConfigRequest.verify|verify} messages.
                     * @param message GetGenerativeQuestionsFeatureConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IGetGenerativeQuestionsFeatureConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetGenerativeQuestionsFeatureConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetGenerativeQuestionsFeatureConfigRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.GetGenerativeQuestionsFeatureConfigRequest;

                    /**
                     * Decodes a GetGenerativeQuestionsFeatureConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetGenerativeQuestionsFeatureConfigRequest
                     * @throws {Error} If the payload 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.retail.v2beta.GetGenerativeQuestionsFeatureConfigRequest;

                    /**
                     * Verifies a GetGenerativeQuestionsFeatureConfigRequest message.
                     * @param message Plain 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 GetGenerativeQuestionsFeatureConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetGenerativeQuestionsFeatureConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.GetGenerativeQuestionsFeatureConfigRequest;

                    /**
                     * Creates a plain object from a GetGenerativeQuestionsFeatureConfigRequest message. Also converts values to other types if specified.
                     * @param message GetGenerativeQuestionsFeatureConfigRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.GetGenerativeQuestionsFeatureConfigRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetGenerativeQuestionsFeatureConfigRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetGenerativeQuestionsFeatureConfigRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListGenerativeQuestionConfigsRequest. */
                interface IListGenerativeQuestionConfigsRequest {

                    /** ListGenerativeQuestionConfigsRequest parent */
                    parent?: (string|null);
                }

                /** Represents a ListGenerativeQuestionConfigsRequest. */
                class ListGenerativeQuestionConfigsRequest implements IListGenerativeQuestionConfigsRequest {

                    /**
                     * Constructs a new ListGenerativeQuestionConfigsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IListGenerativeQuestionConfigsRequest);

                    /** ListGenerativeQuestionConfigsRequest parent. */
                    public parent: string;

                    /**
                     * Creates a new ListGenerativeQuestionConfigsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListGenerativeQuestionConfigsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IListGenerativeQuestionConfigsRequest): google.cloud.retail.v2beta.ListGenerativeQuestionConfigsRequest;

                    /**
                     * Encodes the specified ListGenerativeQuestionConfigsRequest message. Does not implicitly {@link google.cloud.retail.v2beta.ListGenerativeQuestionConfigsRequest.verify|verify} messages.
                     * @param message ListGenerativeQuestionConfigsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IListGenerativeQuestionConfigsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListGenerativeQuestionConfigsRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ListGenerativeQuestionConfigsRequest.verify|verify} messages.
                     * @param message ListGenerativeQuestionConfigsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IListGenerativeQuestionConfigsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListGenerativeQuestionConfigsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListGenerativeQuestionConfigsRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.ListGenerativeQuestionConfigsRequest;

                    /**
                     * Decodes a ListGenerativeQuestionConfigsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListGenerativeQuestionConfigsRequest
                     * @throws {Error} If the payload 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.retail.v2beta.ListGenerativeQuestionConfigsRequest;

                    /**
                     * Verifies a ListGenerativeQuestionConfigsRequest message.
                     * @param message Plain 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 ListGenerativeQuestionConfigsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListGenerativeQuestionConfigsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ListGenerativeQuestionConfigsRequest;

                    /**
                     * Creates a plain object from a ListGenerativeQuestionConfigsRequest message. Also converts values to other types if specified.
                     * @param message ListGenerativeQuestionConfigsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ListGenerativeQuestionConfigsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListGenerativeQuestionConfigsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListGenerativeQuestionConfigsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListGenerativeQuestionConfigsResponse. */
                interface IListGenerativeQuestionConfigsResponse {

                    /** ListGenerativeQuestionConfigsResponse generativeQuestionConfigs */
                    generativeQuestionConfigs?: (google.cloud.retail.v2beta.IGenerativeQuestionConfig[]|null);
                }

                /** Represents a ListGenerativeQuestionConfigsResponse. */
                class ListGenerativeQuestionConfigsResponse implements IListGenerativeQuestionConfigsResponse {

                    /**
                     * Constructs a new ListGenerativeQuestionConfigsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IListGenerativeQuestionConfigsResponse);

                    /** ListGenerativeQuestionConfigsResponse generativeQuestionConfigs. */
                    public generativeQuestionConfigs: google.cloud.retail.v2beta.IGenerativeQuestionConfig[];

                    /**
                     * Creates a new ListGenerativeQuestionConfigsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListGenerativeQuestionConfigsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IListGenerativeQuestionConfigsResponse): google.cloud.retail.v2beta.ListGenerativeQuestionConfigsResponse;

                    /**
                     * Encodes the specified ListGenerativeQuestionConfigsResponse message. Does not implicitly {@link google.cloud.retail.v2beta.ListGenerativeQuestionConfigsResponse.verify|verify} messages.
                     * @param message ListGenerativeQuestionConfigsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IListGenerativeQuestionConfigsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListGenerativeQuestionConfigsResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ListGenerativeQuestionConfigsResponse.verify|verify} messages.
                     * @param message ListGenerativeQuestionConfigsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IListGenerativeQuestionConfigsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListGenerativeQuestionConfigsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListGenerativeQuestionConfigsResponse
                     * @throws {Error} If the payload is not 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.retail.v2beta.ListGenerativeQuestionConfigsResponse;

                    /**
                     * Decodes a ListGenerativeQuestionConfigsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListGenerativeQuestionConfigsResponse
                     * @throws {Error} If the payload 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.retail.v2beta.ListGenerativeQuestionConfigsResponse;

                    /**
                     * Verifies a ListGenerativeQuestionConfigsResponse message.
                     * @param message Plain 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 ListGenerativeQuestionConfigsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListGenerativeQuestionConfigsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ListGenerativeQuestionConfigsResponse;

                    /**
                     * Creates a plain object from a ListGenerativeQuestionConfigsResponse message. Also converts values to other types if specified.
                     * @param message ListGenerativeQuestionConfigsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ListGenerativeQuestionConfigsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListGenerativeQuestionConfigsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListGenerativeQuestionConfigsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateGenerativeQuestionConfigRequest. */
                interface IUpdateGenerativeQuestionConfigRequest {

                    /** UpdateGenerativeQuestionConfigRequest generativeQuestionConfig */
                    generativeQuestionConfig?: (google.cloud.retail.v2beta.IGenerativeQuestionConfig|null);

                    /** UpdateGenerativeQuestionConfigRequest updateMask */
                    updateMask?: (google.protobuf.IFieldMask|null);
                }

                /** Represents an UpdateGenerativeQuestionConfigRequest. */
                class UpdateGenerativeQuestionConfigRequest implements IUpdateGenerativeQuestionConfigRequest {

                    /**
                     * Constructs a new UpdateGenerativeQuestionConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IUpdateGenerativeQuestionConfigRequest);

                    /** UpdateGenerativeQuestionConfigRequest generativeQuestionConfig. */
                    public generativeQuestionConfig?: (google.cloud.retail.v2beta.IGenerativeQuestionConfig|null);

                    /** UpdateGenerativeQuestionConfigRequest updateMask. */
                    public updateMask?: (google.protobuf.IFieldMask|null);

                    /**
                     * Creates a new UpdateGenerativeQuestionConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateGenerativeQuestionConfigRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IUpdateGenerativeQuestionConfigRequest): google.cloud.retail.v2beta.UpdateGenerativeQuestionConfigRequest;

                    /**
                     * Encodes the specified UpdateGenerativeQuestionConfigRequest message. Does not implicitly {@link google.cloud.retail.v2beta.UpdateGenerativeQuestionConfigRequest.verify|verify} messages.
                     * @param message UpdateGenerativeQuestionConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IUpdateGenerativeQuestionConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateGenerativeQuestionConfigRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.UpdateGenerativeQuestionConfigRequest.verify|verify} messages.
                     * @param message UpdateGenerativeQuestionConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IUpdateGenerativeQuestionConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateGenerativeQuestionConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateGenerativeQuestionConfigRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.UpdateGenerativeQuestionConfigRequest;

                    /**
                     * Decodes an UpdateGenerativeQuestionConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateGenerativeQuestionConfigRequest
                     * @throws {Error} If the payload 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.retail.v2beta.UpdateGenerativeQuestionConfigRequest;

                    /**
                     * Verifies an UpdateGenerativeQuestionConfigRequest message.
                     * @param message Plain 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 UpdateGenerativeQuestionConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateGenerativeQuestionConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.UpdateGenerativeQuestionConfigRequest;

                    /**
                     * Creates a plain object from an UpdateGenerativeQuestionConfigRequest message. Also converts values to other types if specified.
                     * @param message UpdateGenerativeQuestionConfigRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.UpdateGenerativeQuestionConfigRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateGenerativeQuestionConfigRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateGenerativeQuestionConfigRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a BatchUpdateGenerativeQuestionConfigsRequest. */
                interface IBatchUpdateGenerativeQuestionConfigsRequest {

                    /** BatchUpdateGenerativeQuestionConfigsRequest parent */
                    parent?: (string|null);

                    /** BatchUpdateGenerativeQuestionConfigsRequest requests */
                    requests?: (google.cloud.retail.v2beta.IUpdateGenerativeQuestionConfigRequest[]|null);
                }

                /** Represents a BatchUpdateGenerativeQuestionConfigsRequest. */
                class BatchUpdateGenerativeQuestionConfigsRequest implements IBatchUpdateGenerativeQuestionConfigsRequest {

                    /**
                     * Constructs a new BatchUpdateGenerativeQuestionConfigsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IBatchUpdateGenerativeQuestionConfigsRequest);

                    /** BatchUpdateGenerativeQuestionConfigsRequest parent. */
                    public parent: string;

                    /** BatchUpdateGenerativeQuestionConfigsRequest requests. */
                    public requests: google.cloud.retail.v2beta.IUpdateGenerativeQuestionConfigRequest[];

                    /**
                     * Creates a new BatchUpdateGenerativeQuestionConfigsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns BatchUpdateGenerativeQuestionConfigsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IBatchUpdateGenerativeQuestionConfigsRequest): google.cloud.retail.v2beta.BatchUpdateGenerativeQuestionConfigsRequest;

                    /**
                     * Encodes the specified BatchUpdateGenerativeQuestionConfigsRequest message. Does not implicitly {@link google.cloud.retail.v2beta.BatchUpdateGenerativeQuestionConfigsRequest.verify|verify} messages.
                     * @param message BatchUpdateGenerativeQuestionConfigsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IBatchUpdateGenerativeQuestionConfigsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified BatchUpdateGenerativeQuestionConfigsRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.BatchUpdateGenerativeQuestionConfigsRequest.verify|verify} messages.
                     * @param message BatchUpdateGenerativeQuestionConfigsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IBatchUpdateGenerativeQuestionConfigsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a BatchUpdateGenerativeQuestionConfigsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns BatchUpdateGenerativeQuestionConfigsRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.BatchUpdateGenerativeQuestionConfigsRequest;

                    /**
                     * Decodes a BatchUpdateGenerativeQuestionConfigsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns BatchUpdateGenerativeQuestionConfigsRequest
                     * @throws {Error} If the payload 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.retail.v2beta.BatchUpdateGenerativeQuestionConfigsRequest;

                    /**
                     * Verifies a BatchUpdateGenerativeQuestionConfigsRequest message.
                     * @param message Plain 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 BatchUpdateGenerativeQuestionConfigsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns BatchUpdateGenerativeQuestionConfigsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.BatchUpdateGenerativeQuestionConfigsRequest;

                    /**
                     * Creates a plain object from a BatchUpdateGenerativeQuestionConfigsRequest message. Also converts values to other types if specified.
                     * @param message BatchUpdateGenerativeQuestionConfigsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.BatchUpdateGenerativeQuestionConfigsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this BatchUpdateGenerativeQuestionConfigsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for BatchUpdateGenerativeQuestionConfigsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a BatchUpdateGenerativeQuestionConfigsResponse. */
                interface IBatchUpdateGenerativeQuestionConfigsResponse {

                    /** BatchUpdateGenerativeQuestionConfigsResponse generativeQuestionConfigs */
                    generativeQuestionConfigs?: (google.cloud.retail.v2beta.IGenerativeQuestionConfig[]|null);
                }

                /** Represents a BatchUpdateGenerativeQuestionConfigsResponse. */
                class BatchUpdateGenerativeQuestionConfigsResponse implements IBatchUpdateGenerativeQuestionConfigsResponse {

                    /**
                     * Constructs a new BatchUpdateGenerativeQuestionConfigsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IBatchUpdateGenerativeQuestionConfigsResponse);

                    /** BatchUpdateGenerativeQuestionConfigsResponse generativeQuestionConfigs. */
                    public generativeQuestionConfigs: google.cloud.retail.v2beta.IGenerativeQuestionConfig[];

                    /**
                     * Creates a new BatchUpdateGenerativeQuestionConfigsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns BatchUpdateGenerativeQuestionConfigsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IBatchUpdateGenerativeQuestionConfigsResponse): google.cloud.retail.v2beta.BatchUpdateGenerativeQuestionConfigsResponse;

                    /**
                     * Encodes the specified BatchUpdateGenerativeQuestionConfigsResponse message. Does not implicitly {@link google.cloud.retail.v2beta.BatchUpdateGenerativeQuestionConfigsResponse.verify|verify} messages.
                     * @param message BatchUpdateGenerativeQuestionConfigsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IBatchUpdateGenerativeQuestionConfigsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified BatchUpdateGenerativeQuestionConfigsResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.BatchUpdateGenerativeQuestionConfigsResponse.verify|verify} messages.
                     * @param message BatchUpdateGenerativeQuestionConfigsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IBatchUpdateGenerativeQuestionConfigsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a BatchUpdateGenerativeQuestionConfigsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns BatchUpdateGenerativeQuestionConfigsResponse
                     * @throws {Error} If the payload is not 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.retail.v2beta.BatchUpdateGenerativeQuestionConfigsResponse;

                    /**
                     * Decodes a BatchUpdateGenerativeQuestionConfigsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns BatchUpdateGenerativeQuestionConfigsResponse
                     * @throws {Error} If the payload 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.retail.v2beta.BatchUpdateGenerativeQuestionConfigsResponse;

                    /**
                     * Verifies a BatchUpdateGenerativeQuestionConfigsResponse message.
                     * @param message Plain 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 BatchUpdateGenerativeQuestionConfigsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns BatchUpdateGenerativeQuestionConfigsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.BatchUpdateGenerativeQuestionConfigsResponse;

                    /**
                     * Creates a plain object from a BatchUpdateGenerativeQuestionConfigsResponse message. Also converts values to other types if specified.
                     * @param message BatchUpdateGenerativeQuestionConfigsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.BatchUpdateGenerativeQuestionConfigsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this BatchUpdateGenerativeQuestionConfigsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for BatchUpdateGenerativeQuestionConfigsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a Model. */
                interface IModel {

                    /** Model name */
                    name?: (string|null);

                    /** Model displayName */
                    displayName?: (string|null);

                    /** Model trainingState */
                    trainingState?: (google.cloud.retail.v2beta.Model.TrainingState|keyof typeof google.cloud.retail.v2beta.Model.TrainingState|null);

                    /** Model servingState */
                    servingState?: (google.cloud.retail.v2beta.Model.ServingState|keyof typeof google.cloud.retail.v2beta.Model.ServingState|null);

                    /** Model createTime */
                    createTime?: (google.protobuf.ITimestamp|null);

                    /** Model updateTime */
                    updateTime?: (google.protobuf.ITimestamp|null);

                    /** Model type */
                    type?: (string|null);

                    /** Model optimizationObjective */
                    optimizationObjective?: (string|null);

                    /** Model periodicTuningState */
                    periodicTuningState?: (google.cloud.retail.v2beta.Model.PeriodicTuningState|keyof typeof google.cloud.retail.v2beta.Model.PeriodicTuningState|null);

                    /** Model lastTuneTime */
                    lastTuneTime?: (google.protobuf.ITimestamp|null);

                    /** Model tuningOperation */
                    tuningOperation?: (string|null);

                    /** Model dataState */
                    dataState?: (google.cloud.retail.v2beta.Model.DataState|keyof typeof google.cloud.retail.v2beta.Model.DataState|null);

                    /** Model filteringOption */
                    filteringOption?: (google.cloud.retail.v2beta.RecommendationsFilteringOption|keyof typeof google.cloud.retail.v2beta.RecommendationsFilteringOption|null);

                    /** Model servingConfigLists */
                    servingConfigLists?: (google.cloud.retail.v2beta.Model.IServingConfigList[]|null);

                    /** Model modelFeaturesConfig */
                    modelFeaturesConfig?: (google.cloud.retail.v2beta.Model.IModelFeaturesConfig|null);
                }

                /** Represents a Model. */
                class Model implements IModel {

                    /**
                     * Constructs a new Model.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IModel);

                    /** Model name. */
                    public name: string;

                    /** Model displayName. */
                    public displayName: string;

                    /** Model trainingState. */
                    public trainingState: (google.cloud.retail.v2beta.Model.TrainingState|keyof typeof google.cloud.retail.v2beta.Model.TrainingState);

                    /** Model servingState. */
                    public servingState: (google.cloud.retail.v2beta.Model.ServingState|keyof typeof google.cloud.retail.v2beta.Model.ServingState);

                    /** Model createTime. */
                    public createTime?: (google.protobuf.ITimestamp|null);

                    /** Model updateTime. */
                    public updateTime?: (google.protobuf.ITimestamp|null);

                    /** Model type. */
                    public type: string;

                    /** Model optimizationObjective. */
                    public optimizationObjective: string;

                    /** Model periodicTuningState. */
                    public periodicTuningState: (google.cloud.retail.v2beta.Model.PeriodicTuningState|keyof typeof google.cloud.retail.v2beta.Model.PeriodicTuningState);

                    /** Model lastTuneTime. */
                    public lastTuneTime?: (google.protobuf.ITimestamp|null);

                    /** Model tuningOperation. */
                    public tuningOperation: string;

                    /** Model dataState. */
                    public dataState: (google.cloud.retail.v2beta.Model.DataState|keyof typeof google.cloud.retail.v2beta.Model.DataState);

                    /** Model filteringOption. */
                    public filteringOption: (google.cloud.retail.v2beta.RecommendationsFilteringOption|keyof typeof google.cloud.retail.v2beta.RecommendationsFilteringOption);

                    /** Model servingConfigLists. */
                    public servingConfigLists: google.cloud.retail.v2beta.Model.IServingConfigList[];

                    /** Model modelFeaturesConfig. */
                    public modelFeaturesConfig?: (google.cloud.retail.v2beta.Model.IModelFeaturesConfig|null);

                    /**
                     * Creates a new Model instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Model instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IModel): google.cloud.retail.v2beta.Model;

                    /**
                     * Encodes the specified Model message. Does not implicitly {@link google.cloud.retail.v2beta.Model.verify|verify} messages.
                     * @param message Model message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IModel, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Model message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.Model.verify|verify} messages.
                     * @param message Model message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IModel, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Model message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Model
                     * @throws {Error} If the payload is not 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.retail.v2beta.Model;

                    /**
                     * Decodes a Model message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Model
                     * @throws {Error} If the payload 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.retail.v2beta.Model;

                    /**
                     * Verifies a Model message.
                     * @param message Plain 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 Model message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Model
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.Model;

                    /**
                     * Creates a plain object from a Model message. Also converts values to other types if specified.
                     * @param message Model
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.Model, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Model to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Model
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace Model {

                    /** Properties of a ServingConfigList. */
                    interface IServingConfigList {

                        /** ServingConfigList servingConfigIds */
                        servingConfigIds?: (string[]|null);
                    }

                    /** Represents a ServingConfigList. */
                    class ServingConfigList implements IServingConfigList {

                        /**
                         * Constructs a new ServingConfigList.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.Model.IServingConfigList);

                        /** ServingConfigList servingConfigIds. */
                        public servingConfigIds: string[];

                        /**
                         * Creates a new ServingConfigList instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ServingConfigList instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.Model.IServingConfigList): google.cloud.retail.v2beta.Model.ServingConfigList;

                        /**
                         * Encodes the specified ServingConfigList message. Does not implicitly {@link google.cloud.retail.v2beta.Model.ServingConfigList.verify|verify} messages.
                         * @param message ServingConfigList message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.Model.IServingConfigList, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ServingConfigList message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.Model.ServingConfigList.verify|verify} messages.
                         * @param message ServingConfigList message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.Model.IServingConfigList, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ServingConfigList message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ServingConfigList
                         * @throws {Error} If the payload is not 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.retail.v2beta.Model.ServingConfigList;

                        /**
                         * Decodes a ServingConfigList message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ServingConfigList
                         * @throws {Error} If the payload 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.retail.v2beta.Model.ServingConfigList;

                        /**
                         * Verifies a ServingConfigList message.
                         * @param message Plain 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 ServingConfigList message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ServingConfigList
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.Model.ServingConfigList;

                        /**
                         * Creates a plain object from a ServingConfigList message. Also converts values to other types if specified.
                         * @param message ServingConfigList
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.Model.ServingConfigList, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ServingConfigList to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ServingConfigList
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a FrequentlyBoughtTogetherFeaturesConfig. */
                    interface IFrequentlyBoughtTogetherFeaturesConfig {

                        /** FrequentlyBoughtTogetherFeaturesConfig contextProductsType */
                        contextProductsType?: (google.cloud.retail.v2beta.Model.ContextProductsType|keyof typeof google.cloud.retail.v2beta.Model.ContextProductsType|null);
                    }

                    /** Represents a FrequentlyBoughtTogetherFeaturesConfig. */
                    class FrequentlyBoughtTogetherFeaturesConfig implements IFrequentlyBoughtTogetherFeaturesConfig {

                        /**
                         * Constructs a new FrequentlyBoughtTogetherFeaturesConfig.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.Model.IFrequentlyBoughtTogetherFeaturesConfig);

                        /** FrequentlyBoughtTogetherFeaturesConfig contextProductsType. */
                        public contextProductsType: (google.cloud.retail.v2beta.Model.ContextProductsType|keyof typeof google.cloud.retail.v2beta.Model.ContextProductsType);

                        /**
                         * Creates a new FrequentlyBoughtTogetherFeaturesConfig instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns FrequentlyBoughtTogetherFeaturesConfig instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.Model.IFrequentlyBoughtTogetherFeaturesConfig): google.cloud.retail.v2beta.Model.FrequentlyBoughtTogetherFeaturesConfig;

                        /**
                         * Encodes the specified FrequentlyBoughtTogetherFeaturesConfig message. Does not implicitly {@link google.cloud.retail.v2beta.Model.FrequentlyBoughtTogetherFeaturesConfig.verify|verify} messages.
                         * @param message FrequentlyBoughtTogetherFeaturesConfig message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.Model.IFrequentlyBoughtTogetherFeaturesConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified FrequentlyBoughtTogetherFeaturesConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.Model.FrequentlyBoughtTogetherFeaturesConfig.verify|verify} messages.
                         * @param message FrequentlyBoughtTogetherFeaturesConfig message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.Model.IFrequentlyBoughtTogetherFeaturesConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a FrequentlyBoughtTogetherFeaturesConfig message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns FrequentlyBoughtTogetherFeaturesConfig
                         * @throws {Error} If the payload is not 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.retail.v2beta.Model.FrequentlyBoughtTogetherFeaturesConfig;

                        /**
                         * Decodes a FrequentlyBoughtTogetherFeaturesConfig message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns FrequentlyBoughtTogetherFeaturesConfig
                         * @throws {Error} If the payload 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.retail.v2beta.Model.FrequentlyBoughtTogetherFeaturesConfig;

                        /**
                         * Verifies a FrequentlyBoughtTogetherFeaturesConfig message.
                         * @param message Plain 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 FrequentlyBoughtTogetherFeaturesConfig message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns FrequentlyBoughtTogetherFeaturesConfig
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.Model.FrequentlyBoughtTogetherFeaturesConfig;

                        /**
                         * Creates a plain object from a FrequentlyBoughtTogetherFeaturesConfig message. Also converts values to other types if specified.
                         * @param message FrequentlyBoughtTogetherFeaturesConfig
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.Model.FrequentlyBoughtTogetherFeaturesConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this FrequentlyBoughtTogetherFeaturesConfig to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for FrequentlyBoughtTogetherFeaturesConfig
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a ModelFeaturesConfig. */
                    interface IModelFeaturesConfig {

                        /** ModelFeaturesConfig frequentlyBoughtTogetherConfig */
                        frequentlyBoughtTogetherConfig?: (google.cloud.retail.v2beta.Model.IFrequentlyBoughtTogetherFeaturesConfig|null);
                    }

                    /** Represents a ModelFeaturesConfig. */
                    class ModelFeaturesConfig implements IModelFeaturesConfig {

                        /**
                         * Constructs a new ModelFeaturesConfig.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.Model.IModelFeaturesConfig);

                        /** ModelFeaturesConfig frequentlyBoughtTogetherConfig. */
                        public frequentlyBoughtTogetherConfig?: (google.cloud.retail.v2beta.Model.IFrequentlyBoughtTogetherFeaturesConfig|null);

                        /** ModelFeaturesConfig typeDedicatedConfig. */
                        public typeDedicatedConfig?: "frequentlyBoughtTogetherConfig";

                        /**
                         * Creates a new ModelFeaturesConfig instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ModelFeaturesConfig instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.Model.IModelFeaturesConfig): google.cloud.retail.v2beta.Model.ModelFeaturesConfig;

                        /**
                         * Encodes the specified ModelFeaturesConfig message. Does not implicitly {@link google.cloud.retail.v2beta.Model.ModelFeaturesConfig.verify|verify} messages.
                         * @param message ModelFeaturesConfig message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.Model.IModelFeaturesConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ModelFeaturesConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.Model.ModelFeaturesConfig.verify|verify} messages.
                         * @param message ModelFeaturesConfig message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.Model.IModelFeaturesConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ModelFeaturesConfig message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ModelFeaturesConfig
                         * @throws {Error} If the payload is not 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.retail.v2beta.Model.ModelFeaturesConfig;

                        /**
                         * Decodes a ModelFeaturesConfig message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ModelFeaturesConfig
                         * @throws {Error} If the payload 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.retail.v2beta.Model.ModelFeaturesConfig;

                        /**
                         * Verifies a ModelFeaturesConfig message.
                         * @param message Plain 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 ModelFeaturesConfig message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ModelFeaturesConfig
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.Model.ModelFeaturesConfig;

                        /**
                         * Creates a plain object from a ModelFeaturesConfig message. Also converts values to other types if specified.
                         * @param message ModelFeaturesConfig
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.Model.ModelFeaturesConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ModelFeaturesConfig to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ModelFeaturesConfig
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** ServingState enum. */
                    enum ServingState {
                        SERVING_STATE_UNSPECIFIED = 0,
                        INACTIVE = 1,
                        ACTIVE = 2,
                        TUNED = 3
                    }

                    /** TrainingState enum. */
                    enum TrainingState {
                        TRAINING_STATE_UNSPECIFIED = 0,
                        PAUSED = 1,
                        TRAINING = 2
                    }

                    /** PeriodicTuningState enum. */
                    enum PeriodicTuningState {
                        PERIODIC_TUNING_STATE_UNSPECIFIED = 0,
                        PERIODIC_TUNING_DISABLED = 1,
                        ALL_TUNING_DISABLED = 3,
                        PERIODIC_TUNING_ENABLED = 2
                    }

                    /** DataState enum. */
                    enum DataState {
                        DATA_STATE_UNSPECIFIED = 0,
                        DATA_OK = 1,
                        DATA_ERROR = 2
                    }

                    /** ContextProductsType enum. */
                    enum ContextProductsType {
                        CONTEXT_PRODUCTS_TYPE_UNSPECIFIED = 0,
                        SINGLE_CONTEXT_PRODUCT = 1,
                        MULTIPLE_CONTEXT_PRODUCTS = 2
                    }
                }

                /** Represents a ModelService */
                class ModelService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new ModelService 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 ModelService 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): ModelService;

                    /**
                     * Calls CreateModel.
                     * @param request CreateModelRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public createModel(request: google.cloud.retail.v2beta.ICreateModelRequest, callback: google.cloud.retail.v2beta.ModelService.CreateModelCallback): void;

                    /**
                     * Calls CreateModel.
                     * @param request CreateModelRequest message or plain object
                     * @returns Promise
                     */
                    public createModel(request: google.cloud.retail.v2beta.ICreateModelRequest): Promise<google.longrunning.Operation>;

                    /**
                     * Calls GetModel.
                     * @param request GetModelRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Model
                     */
                    public getModel(request: google.cloud.retail.v2beta.IGetModelRequest, callback: google.cloud.retail.v2beta.ModelService.GetModelCallback): void;

                    /**
                     * Calls GetModel.
                     * @param request GetModelRequest message or plain object
                     * @returns Promise
                     */
                    public getModel(request: google.cloud.retail.v2beta.IGetModelRequest): Promise<google.cloud.retail.v2beta.Model>;

                    /**
                     * Calls PauseModel.
                     * @param request PauseModelRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Model
                     */
                    public pauseModel(request: google.cloud.retail.v2beta.IPauseModelRequest, callback: google.cloud.retail.v2beta.ModelService.PauseModelCallback): void;

                    /**
                     * Calls PauseModel.
                     * @param request PauseModelRequest message or plain object
                     * @returns Promise
                     */
                    public pauseModel(request: google.cloud.retail.v2beta.IPauseModelRequest): Promise<google.cloud.retail.v2beta.Model>;

                    /**
                     * Calls ResumeModel.
                     * @param request ResumeModelRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Model
                     */
                    public resumeModel(request: google.cloud.retail.v2beta.IResumeModelRequest, callback: google.cloud.retail.v2beta.ModelService.ResumeModelCallback): void;

                    /**
                     * Calls ResumeModel.
                     * @param request ResumeModelRequest message or plain object
                     * @returns Promise
                     */
                    public resumeModel(request: google.cloud.retail.v2beta.IResumeModelRequest): Promise<google.cloud.retail.v2beta.Model>;

                    /**
                     * Calls DeleteModel.
                     * @param request DeleteModelRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Empty
                     */
                    public deleteModel(request: google.cloud.retail.v2beta.IDeleteModelRequest, callback: google.cloud.retail.v2beta.ModelService.DeleteModelCallback): void;

                    /**
                     * Calls DeleteModel.
                     * @param request DeleteModelRequest message or plain object
                     * @returns Promise
                     */
                    public deleteModel(request: google.cloud.retail.v2beta.IDeleteModelRequest): Promise<google.protobuf.Empty>;

                    /**
                     * Calls ListModels.
                     * @param request ListModelsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListModelsResponse
                     */
                    public listModels(request: google.cloud.retail.v2beta.IListModelsRequest, callback: google.cloud.retail.v2beta.ModelService.ListModelsCallback): void;

                    /**
                     * Calls ListModels.
                     * @param request ListModelsRequest message or plain object
                     * @returns Promise
                     */
                    public listModels(request: google.cloud.retail.v2beta.IListModelsRequest): Promise<google.cloud.retail.v2beta.ListModelsResponse>;

                    /**
                     * Calls UpdateModel.
                     * @param request UpdateModelRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Model
                     */
                    public updateModel(request: google.cloud.retail.v2beta.IUpdateModelRequest, callback: google.cloud.retail.v2beta.ModelService.UpdateModelCallback): void;

                    /**
                     * Calls UpdateModel.
                     * @param request UpdateModelRequest message or plain object
                     * @returns Promise
                     */
                    public updateModel(request: google.cloud.retail.v2beta.IUpdateModelRequest): Promise<google.cloud.retail.v2beta.Model>;

                    /**
                     * Calls TuneModel.
                     * @param request TuneModelRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public tuneModel(request: google.cloud.retail.v2beta.ITuneModelRequest, callback: google.cloud.retail.v2beta.ModelService.TuneModelCallback): void;

                    /**
                     * Calls TuneModel.
                     * @param request TuneModelRequest message or plain object
                     * @returns Promise
                     */
                    public tuneModel(request: google.cloud.retail.v2beta.ITuneModelRequest): Promise<google.longrunning.Operation>;
                }

                namespace ModelService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.ModelService|createModel}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type CreateModelCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.ModelService|getModel}.
                     * @param error Error, if any
                     * @param [response] Model
                     */
                    type GetModelCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.Model) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.ModelService|pauseModel}.
                     * @param error Error, if any
                     * @param [response] Model
                     */
                    type PauseModelCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.Model) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.ModelService|resumeModel}.
                     * @param error Error, if any
                     * @param [response] Model
                     */
                    type ResumeModelCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.Model) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.ModelService|deleteModel}.
                     * @param error Error, if any
                     * @param [response] Empty
                     */
                    type DeleteModelCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.ModelService|listModels}.
                     * @param error Error, if any
                     * @param [response] ListModelsResponse
                     */
                    type ListModelsCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.ListModelsResponse) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.ModelService|updateModel}.
                     * @param error Error, if any
                     * @param [response] Model
                     */
                    type UpdateModelCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.Model) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.ModelService|tuneModel}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type TuneModelCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;
                }

                /** Properties of a CreateModelRequest. */
                interface ICreateModelRequest {

                    /** CreateModelRequest parent */
                    parent?: (string|null);

                    /** CreateModelRequest model */
                    model?: (google.cloud.retail.v2beta.IModel|null);

                    /** CreateModelRequest dryRun */
                    dryRun?: (boolean|null);
                }

                /** Represents a CreateModelRequest. */
                class CreateModelRequest implements ICreateModelRequest {

                    /**
                     * Constructs a new CreateModelRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.ICreateModelRequest);

                    /** CreateModelRequest parent. */
                    public parent: string;

                    /** CreateModelRequest model. */
                    public model?: (google.cloud.retail.v2beta.IModel|null);

                    /** CreateModelRequest dryRun. */
                    public dryRun: boolean;

                    /**
                     * Creates a new CreateModelRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CreateModelRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.ICreateModelRequest): google.cloud.retail.v2beta.CreateModelRequest;

                    /**
                     * Encodes the specified CreateModelRequest message. Does not implicitly {@link google.cloud.retail.v2beta.CreateModelRequest.verify|verify} messages.
                     * @param message CreateModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.ICreateModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CreateModelRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.CreateModelRequest.verify|verify} messages.
                     * @param message CreateModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.ICreateModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CreateModelRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CreateModelRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.CreateModelRequest;

                    /**
                     * Decodes a CreateModelRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CreateModelRequest
                     * @throws {Error} If the payload 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.retail.v2beta.CreateModelRequest;

                    /**
                     * Verifies a CreateModelRequest message.
                     * @param message Plain 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 CreateModelRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CreateModelRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.CreateModelRequest;

                    /**
                     * Creates a plain object from a CreateModelRequest message. Also converts values to other types if specified.
                     * @param message CreateModelRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.CreateModelRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CreateModelRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CreateModelRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateModelRequest. */
                interface IUpdateModelRequest {

                    /** UpdateModelRequest model */
                    model?: (google.cloud.retail.v2beta.IModel|null);

                    /** UpdateModelRequest updateMask */
                    updateMask?: (google.protobuf.IFieldMask|null);
                }

                /** Represents an UpdateModelRequest. */
                class UpdateModelRequest implements IUpdateModelRequest {

                    /**
                     * Constructs a new UpdateModelRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IUpdateModelRequest);

                    /** UpdateModelRequest model. */
                    public model?: (google.cloud.retail.v2beta.IModel|null);

                    /** UpdateModelRequest updateMask. */
                    public updateMask?: (google.protobuf.IFieldMask|null);

                    /**
                     * Creates a new UpdateModelRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateModelRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IUpdateModelRequest): google.cloud.retail.v2beta.UpdateModelRequest;

                    /**
                     * Encodes the specified UpdateModelRequest message. Does not implicitly {@link google.cloud.retail.v2beta.UpdateModelRequest.verify|verify} messages.
                     * @param message UpdateModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IUpdateModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateModelRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.UpdateModelRequest.verify|verify} messages.
                     * @param message UpdateModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IUpdateModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateModelRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateModelRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.UpdateModelRequest;

                    /**
                     * Decodes an UpdateModelRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateModelRequest
                     * @throws {Error} If the payload 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.retail.v2beta.UpdateModelRequest;

                    /**
                     * Verifies an UpdateModelRequest message.
                     * @param message Plain 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 UpdateModelRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateModelRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.UpdateModelRequest;

                    /**
                     * Creates a plain object from an UpdateModelRequest message. Also converts values to other types if specified.
                     * @param message UpdateModelRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.UpdateModelRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateModelRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateModelRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetModelRequest. */
                interface IGetModelRequest {

                    /** GetModelRequest name */
                    name?: (string|null);
                }

                /** Represents a GetModelRequest. */
                class GetModelRequest implements IGetModelRequest {

                    /**
                     * Constructs a new GetModelRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IGetModelRequest);

                    /** GetModelRequest name. */
                    public name: string;

                    /**
                     * Creates a new GetModelRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetModelRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IGetModelRequest): google.cloud.retail.v2beta.GetModelRequest;

                    /**
                     * Encodes the specified GetModelRequest message. Does not implicitly {@link google.cloud.retail.v2beta.GetModelRequest.verify|verify} messages.
                     * @param message GetModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IGetModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetModelRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.GetModelRequest.verify|verify} messages.
                     * @param message GetModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IGetModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetModelRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetModelRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.GetModelRequest;

                    /**
                     * Decodes a GetModelRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetModelRequest
                     * @throws {Error} If the payload 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.retail.v2beta.GetModelRequest;

                    /**
                     * Verifies a GetModelRequest message.
                     * @param message Plain 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 GetModelRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetModelRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.GetModelRequest;

                    /**
                     * Creates a plain object from a GetModelRequest message. Also converts values to other types if specified.
                     * @param message GetModelRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.GetModelRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetModelRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetModelRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PauseModelRequest. */
                interface IPauseModelRequest {

                    /** PauseModelRequest name */
                    name?: (string|null);
                }

                /** Represents a PauseModelRequest. */
                class PauseModelRequest implements IPauseModelRequest {

                    /**
                     * Constructs a new PauseModelRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IPauseModelRequest);

                    /** PauseModelRequest name. */
                    public name: string;

                    /**
                     * Creates a new PauseModelRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PauseModelRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IPauseModelRequest): google.cloud.retail.v2beta.PauseModelRequest;

                    /**
                     * Encodes the specified PauseModelRequest message. Does not implicitly {@link google.cloud.retail.v2beta.PauseModelRequest.verify|verify} messages.
                     * @param message PauseModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IPauseModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PauseModelRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.PauseModelRequest.verify|verify} messages.
                     * @param message PauseModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IPauseModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PauseModelRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PauseModelRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.PauseModelRequest;

                    /**
                     * Decodes a PauseModelRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PauseModelRequest
                     * @throws {Error} If the payload 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.retail.v2beta.PauseModelRequest;

                    /**
                     * Verifies a PauseModelRequest message.
                     * @param message Plain 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 PauseModelRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PauseModelRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.PauseModelRequest;

                    /**
                     * Creates a plain object from a PauseModelRequest message. Also converts values to other types if specified.
                     * @param message PauseModelRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.PauseModelRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PauseModelRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PauseModelRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ResumeModelRequest. */
                interface IResumeModelRequest {

                    /** ResumeModelRequest name */
                    name?: (string|null);
                }

                /** Represents a ResumeModelRequest. */
                class ResumeModelRequest implements IResumeModelRequest {

                    /**
                     * Constructs a new ResumeModelRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IResumeModelRequest);

                    /** ResumeModelRequest name. */
                    public name: string;

                    /**
                     * Creates a new ResumeModelRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ResumeModelRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IResumeModelRequest): google.cloud.retail.v2beta.ResumeModelRequest;

                    /**
                     * Encodes the specified ResumeModelRequest message. Does not implicitly {@link google.cloud.retail.v2beta.ResumeModelRequest.verify|verify} messages.
                     * @param message ResumeModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IResumeModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ResumeModelRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ResumeModelRequest.verify|verify} messages.
                     * @param message ResumeModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IResumeModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ResumeModelRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ResumeModelRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.ResumeModelRequest;

                    /**
                     * Decodes a ResumeModelRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ResumeModelRequest
                     * @throws {Error} If the payload 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.retail.v2beta.ResumeModelRequest;

                    /**
                     * Verifies a ResumeModelRequest message.
                     * @param message Plain 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 ResumeModelRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ResumeModelRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ResumeModelRequest;

                    /**
                     * Creates a plain object from a ResumeModelRequest message. Also converts values to other types if specified.
                     * @param message ResumeModelRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ResumeModelRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ResumeModelRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ResumeModelRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListModelsRequest. */
                interface IListModelsRequest {

                    /** ListModelsRequest parent */
                    parent?: (string|null);

                    /** ListModelsRequest pageSize */
                    pageSize?: (number|null);

                    /** ListModelsRequest pageToken */
                    pageToken?: (string|null);
                }

                /** Represents a ListModelsRequest. */
                class ListModelsRequest implements IListModelsRequest {

                    /**
                     * Constructs a new ListModelsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IListModelsRequest);

                    /** ListModelsRequest parent. */
                    public parent: string;

                    /** ListModelsRequest pageSize. */
                    public pageSize: number;

                    /** ListModelsRequest pageToken. */
                    public pageToken: string;

                    /**
                     * Creates a new ListModelsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListModelsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IListModelsRequest): google.cloud.retail.v2beta.ListModelsRequest;

                    /**
                     * Encodes the specified ListModelsRequest message. Does not implicitly {@link google.cloud.retail.v2beta.ListModelsRequest.verify|verify} messages.
                     * @param message ListModelsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IListModelsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListModelsRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ListModelsRequest.verify|verify} messages.
                     * @param message ListModelsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IListModelsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListModelsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListModelsRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.ListModelsRequest;

                    /**
                     * Decodes a ListModelsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListModelsRequest
                     * @throws {Error} If the payload 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.retail.v2beta.ListModelsRequest;

                    /**
                     * Verifies a ListModelsRequest message.
                     * @param message Plain 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 ListModelsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListModelsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ListModelsRequest;

                    /**
                     * Creates a plain object from a ListModelsRequest message. Also converts values to other types if specified.
                     * @param message ListModelsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ListModelsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListModelsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListModelsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeleteModelRequest. */
                interface IDeleteModelRequest {

                    /** DeleteModelRequest name */
                    name?: (string|null);
                }

                /** Represents a DeleteModelRequest. */
                class DeleteModelRequest implements IDeleteModelRequest {

                    /**
                     * Constructs a new DeleteModelRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IDeleteModelRequest);

                    /** DeleteModelRequest name. */
                    public name: string;

                    /**
                     * Creates a new DeleteModelRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeleteModelRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IDeleteModelRequest): google.cloud.retail.v2beta.DeleteModelRequest;

                    /**
                     * Encodes the specified DeleteModelRequest message. Does not implicitly {@link google.cloud.retail.v2beta.DeleteModelRequest.verify|verify} messages.
                     * @param message DeleteModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IDeleteModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeleteModelRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.DeleteModelRequest.verify|verify} messages.
                     * @param message DeleteModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IDeleteModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeleteModelRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeleteModelRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.DeleteModelRequest;

                    /**
                     * Decodes a DeleteModelRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeleteModelRequest
                     * @throws {Error} If the payload 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.retail.v2beta.DeleteModelRequest;

                    /**
                     * Verifies a DeleteModelRequest message.
                     * @param message Plain 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 DeleteModelRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeleteModelRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.DeleteModelRequest;

                    /**
                     * Creates a plain object from a DeleteModelRequest message. Also converts values to other types if specified.
                     * @param message DeleteModelRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.DeleteModelRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeleteModelRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeleteModelRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListModelsResponse. */
                interface IListModelsResponse {

                    /** ListModelsResponse models */
                    models?: (google.cloud.retail.v2beta.IModel[]|null);

                    /** ListModelsResponse nextPageToken */
                    nextPageToken?: (string|null);
                }

                /** Represents a ListModelsResponse. */
                class ListModelsResponse implements IListModelsResponse {

                    /**
                     * Constructs a new ListModelsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IListModelsResponse);

                    /** ListModelsResponse models. */
                    public models: google.cloud.retail.v2beta.IModel[];

                    /** ListModelsResponse nextPageToken. */
                    public nextPageToken: string;

                    /**
                     * Creates a new ListModelsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListModelsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IListModelsResponse): google.cloud.retail.v2beta.ListModelsResponse;

                    /**
                     * Encodes the specified ListModelsResponse message. Does not implicitly {@link google.cloud.retail.v2beta.ListModelsResponse.verify|verify} messages.
                     * @param message ListModelsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IListModelsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListModelsResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ListModelsResponse.verify|verify} messages.
                     * @param message ListModelsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IListModelsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListModelsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListModelsResponse
                     * @throws {Error} If the payload is not 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.retail.v2beta.ListModelsResponse;

                    /**
                     * Decodes a ListModelsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListModelsResponse
                     * @throws {Error} If the payload 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.retail.v2beta.ListModelsResponse;

                    /**
                     * Verifies a ListModelsResponse message.
                     * @param message Plain 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 ListModelsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListModelsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ListModelsResponse;

                    /**
                     * Creates a plain object from a ListModelsResponse message. Also converts values to other types if specified.
                     * @param message ListModelsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ListModelsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListModelsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListModelsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TuneModelRequest. */
                interface ITuneModelRequest {

                    /** TuneModelRequest name */
                    name?: (string|null);
                }

                /** Represents a TuneModelRequest. */
                class TuneModelRequest implements ITuneModelRequest {

                    /**
                     * Constructs a new TuneModelRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.ITuneModelRequest);

                    /** TuneModelRequest name. */
                    public name: string;

                    /**
                     * Creates a new TuneModelRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TuneModelRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.ITuneModelRequest): google.cloud.retail.v2beta.TuneModelRequest;

                    /**
                     * Encodes the specified TuneModelRequest message. Does not implicitly {@link google.cloud.retail.v2beta.TuneModelRequest.verify|verify} messages.
                     * @param message TuneModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.ITuneModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TuneModelRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.TuneModelRequest.verify|verify} messages.
                     * @param message TuneModelRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.ITuneModelRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TuneModelRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TuneModelRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.TuneModelRequest;

                    /**
                     * Decodes a TuneModelRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TuneModelRequest
                     * @throws {Error} If the payload 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.retail.v2beta.TuneModelRequest;

                    /**
                     * Verifies a TuneModelRequest message.
                     * @param message Plain 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 TuneModelRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TuneModelRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.TuneModelRequest;

                    /**
                     * Creates a plain object from a TuneModelRequest message. Also converts values to other types if specified.
                     * @param message TuneModelRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.TuneModelRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TuneModelRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TuneModelRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CreateModelMetadata. */
                interface ICreateModelMetadata {

                    /** CreateModelMetadata model */
                    model?: (string|null);
                }

                /** Represents a CreateModelMetadata. */
                class CreateModelMetadata implements ICreateModelMetadata {

                    /**
                     * Constructs a new CreateModelMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.ICreateModelMetadata);

                    /** CreateModelMetadata model. */
                    public model: string;

                    /**
                     * Creates a new CreateModelMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CreateModelMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.ICreateModelMetadata): google.cloud.retail.v2beta.CreateModelMetadata;

                    /**
                     * Encodes the specified CreateModelMetadata message. Does not implicitly {@link google.cloud.retail.v2beta.CreateModelMetadata.verify|verify} messages.
                     * @param message CreateModelMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.ICreateModelMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CreateModelMetadata message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.CreateModelMetadata.verify|verify} messages.
                     * @param message CreateModelMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.ICreateModelMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CreateModelMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CreateModelMetadata
                     * @throws {Error} If the payload is not 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.retail.v2beta.CreateModelMetadata;

                    /**
                     * Decodes a CreateModelMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CreateModelMetadata
                     * @throws {Error} If the payload 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.retail.v2beta.CreateModelMetadata;

                    /**
                     * Verifies a CreateModelMetadata message.
                     * @param message Plain 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 CreateModelMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CreateModelMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.CreateModelMetadata;

                    /**
                     * Creates a plain object from a CreateModelMetadata message. Also converts values to other types if specified.
                     * @param message CreateModelMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.CreateModelMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CreateModelMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CreateModelMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TuneModelMetadata. */
                interface ITuneModelMetadata {

                    /** TuneModelMetadata model */
                    model?: (string|null);
                }

                /** Represents a TuneModelMetadata. */
                class TuneModelMetadata implements ITuneModelMetadata {

                    /**
                     * Constructs a new TuneModelMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.ITuneModelMetadata);

                    /** TuneModelMetadata model. */
                    public model: string;

                    /**
                     * Creates a new TuneModelMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TuneModelMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.ITuneModelMetadata): google.cloud.retail.v2beta.TuneModelMetadata;

                    /**
                     * Encodes the specified TuneModelMetadata message. Does not implicitly {@link google.cloud.retail.v2beta.TuneModelMetadata.verify|verify} messages.
                     * @param message TuneModelMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.ITuneModelMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TuneModelMetadata message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.TuneModelMetadata.verify|verify} messages.
                     * @param message TuneModelMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.ITuneModelMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TuneModelMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TuneModelMetadata
                     * @throws {Error} If the payload is not 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.retail.v2beta.TuneModelMetadata;

                    /**
                     * Decodes a TuneModelMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TuneModelMetadata
                     * @throws {Error} If the payload 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.retail.v2beta.TuneModelMetadata;

                    /**
                     * Verifies a TuneModelMetadata message.
                     * @param message Plain 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 TuneModelMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TuneModelMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.TuneModelMetadata;

                    /**
                     * Creates a plain object from a TuneModelMetadata message. Also converts values to other types if specified.
                     * @param message TuneModelMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.TuneModelMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TuneModelMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TuneModelMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a TuneModelResponse. */
                interface ITuneModelResponse {
                }

                /** Represents a TuneModelResponse. */
                class TuneModelResponse implements ITuneModelResponse {

                    /**
                     * Constructs a new TuneModelResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.ITuneModelResponse);

                    /**
                     * Creates a new TuneModelResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns TuneModelResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.ITuneModelResponse): google.cloud.retail.v2beta.TuneModelResponse;

                    /**
                     * Encodes the specified TuneModelResponse message. Does not implicitly {@link google.cloud.retail.v2beta.TuneModelResponse.verify|verify} messages.
                     * @param message TuneModelResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.ITuneModelResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified TuneModelResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.TuneModelResponse.verify|verify} messages.
                     * @param message TuneModelResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.ITuneModelResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a TuneModelResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns TuneModelResponse
                     * @throws {Error} If the payload is not 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.retail.v2beta.TuneModelResponse;

                    /**
                     * Decodes a TuneModelResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns TuneModelResponse
                     * @throws {Error} If the payload 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.retail.v2beta.TuneModelResponse;

                    /**
                     * Verifies a TuneModelResponse message.
                     * @param message Plain 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 TuneModelResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns TuneModelResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.TuneModelResponse;

                    /**
                     * Creates a plain object from a TuneModelResponse message. Also converts values to other types if specified.
                     * @param message TuneModelResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.TuneModelResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this TuneModelResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for TuneModelResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Represents a PredictionService */
                class PredictionService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new PredictionService 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 PredictionService 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): PredictionService;

                    /**
                     * Calls Predict.
                     * @param request PredictRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and PredictResponse
                     */
                    public predict(request: google.cloud.retail.v2beta.IPredictRequest, callback: google.cloud.retail.v2beta.PredictionService.PredictCallback): void;

                    /**
                     * Calls Predict.
                     * @param request PredictRequest message or plain object
                     * @returns Promise
                     */
                    public predict(request: google.cloud.retail.v2beta.IPredictRequest): Promise<google.cloud.retail.v2beta.PredictResponse>;
                }

                namespace PredictionService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.PredictionService|predict}.
                     * @param error Error, if any
                     * @param [response] PredictResponse
                     */
                    type PredictCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.PredictResponse) => void;
                }

                /** Properties of a PredictRequest. */
                interface IPredictRequest {

                    /** PredictRequest placement */
                    placement?: (string|null);

                    /** PredictRequest userEvent */
                    userEvent?: (google.cloud.retail.v2beta.IUserEvent|null);

                    /** PredictRequest pageSize */
                    pageSize?: (number|null);

                    /** PredictRequest pageToken */
                    pageToken?: (string|null);

                    /** PredictRequest filter */
                    filter?: (string|null);

                    /** PredictRequest validateOnly */
                    validateOnly?: (boolean|null);

                    /** PredictRequest params */
                    params?: ({ [k: string]: google.protobuf.IValue }|null);

                    /** PredictRequest labels */
                    labels?: ({ [k: string]: string }|null);
                }

                /** Represents a PredictRequest. */
                class PredictRequest implements IPredictRequest {

                    /**
                     * Constructs a new PredictRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IPredictRequest);

                    /** PredictRequest placement. */
                    public placement: string;

                    /** PredictRequest userEvent. */
                    public userEvent?: (google.cloud.retail.v2beta.IUserEvent|null);

                    /** PredictRequest pageSize. */
                    public pageSize: number;

                    /** PredictRequest pageToken. */
                    public pageToken: string;

                    /** PredictRequest filter. */
                    public filter: string;

                    /** PredictRequest validateOnly. */
                    public validateOnly: boolean;

                    /** PredictRequest params. */
                    public params: { [k: string]: google.protobuf.IValue };

                    /** PredictRequest labels. */
                    public labels: { [k: string]: string };

                    /**
                     * Creates a new PredictRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PredictRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IPredictRequest): google.cloud.retail.v2beta.PredictRequest;

                    /**
                     * Encodes the specified PredictRequest message. Does not implicitly {@link google.cloud.retail.v2beta.PredictRequest.verify|verify} messages.
                     * @param message PredictRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IPredictRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PredictRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.PredictRequest.verify|verify} messages.
                     * @param message PredictRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IPredictRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PredictRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PredictRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.PredictRequest;

                    /**
                     * Decodes a PredictRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PredictRequest
                     * @throws {Error} If the payload 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.retail.v2beta.PredictRequest;

                    /**
                     * Verifies a PredictRequest message.
                     * @param message Plain 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 PredictRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PredictRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.PredictRequest;

                    /**
                     * Creates a plain object from a PredictRequest message. Also converts values to other types if specified.
                     * @param message PredictRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.PredictRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PredictRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PredictRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PredictResponse. */
                interface IPredictResponse {

                    /** PredictResponse results */
                    results?: (google.cloud.retail.v2beta.PredictResponse.IPredictionResult[]|null);

                    /** PredictResponse attributionToken */
                    attributionToken?: (string|null);

                    /** PredictResponse missingIds */
                    missingIds?: (string[]|null);

                    /** PredictResponse validateOnly */
                    validateOnly?: (boolean|null);
                }

                /** Represents a PredictResponse. */
                class PredictResponse implements IPredictResponse {

                    /**
                     * Constructs a new PredictResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IPredictResponse);

                    /** PredictResponse results. */
                    public results: google.cloud.retail.v2beta.PredictResponse.IPredictionResult[];

                    /** PredictResponse attributionToken. */
                    public attributionToken: string;

                    /** PredictResponse missingIds. */
                    public missingIds: string[];

                    /** PredictResponse validateOnly. */
                    public validateOnly: boolean;

                    /**
                     * Creates a new PredictResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PredictResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IPredictResponse): google.cloud.retail.v2beta.PredictResponse;

                    /**
                     * Encodes the specified PredictResponse message. Does not implicitly {@link google.cloud.retail.v2beta.PredictResponse.verify|verify} messages.
                     * @param message PredictResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IPredictResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PredictResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.PredictResponse.verify|verify} messages.
                     * @param message PredictResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IPredictResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PredictResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PredictResponse
                     * @throws {Error} If the payload is not 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.retail.v2beta.PredictResponse;

                    /**
                     * Decodes a PredictResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PredictResponse
                     * @throws {Error} If the payload 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.retail.v2beta.PredictResponse;

                    /**
                     * Verifies a PredictResponse message.
                     * @param message Plain 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 PredictResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PredictResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.PredictResponse;

                    /**
                     * Creates a plain object from a PredictResponse message. Also converts values to other types if specified.
                     * @param message PredictResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.PredictResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PredictResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PredictResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace PredictResponse {

                    /** Properties of a PredictionResult. */
                    interface IPredictionResult {

                        /** PredictionResult id */
                        id?: (string|null);

                        /** PredictionResult metadata */
                        metadata?: ({ [k: string]: google.protobuf.IValue }|null);
                    }

                    /** Represents a PredictionResult. */
                    class PredictionResult implements IPredictionResult {

                        /**
                         * Constructs a new PredictionResult.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.PredictResponse.IPredictionResult);

                        /** PredictionResult id. */
                        public id: string;

                        /** PredictionResult metadata. */
                        public metadata: { [k: string]: google.protobuf.IValue };

                        /**
                         * Creates a new PredictionResult instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns PredictionResult instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.PredictResponse.IPredictionResult): google.cloud.retail.v2beta.PredictResponse.PredictionResult;

                        /**
                         * Encodes the specified PredictionResult message. Does not implicitly {@link google.cloud.retail.v2beta.PredictResponse.PredictionResult.verify|verify} messages.
                         * @param message PredictionResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.PredictResponse.IPredictionResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified PredictionResult message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.PredictResponse.PredictionResult.verify|verify} messages.
                         * @param message PredictionResult message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.PredictResponse.IPredictionResult, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a PredictionResult message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns PredictionResult
                         * @throws {Error} If the payload is not 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.retail.v2beta.PredictResponse.PredictionResult;

                        /**
                         * Decodes a PredictionResult message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns PredictionResult
                         * @throws {Error} If the payload 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.retail.v2beta.PredictResponse.PredictionResult;

                        /**
                         * Verifies a PredictionResult message.
                         * @param message Plain 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 PredictionResult message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns PredictionResult
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.PredictResponse.PredictionResult;

                        /**
                         * Creates a plain object from a PredictionResult message. Also converts values to other types if specified.
                         * @param message PredictionResult
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.PredictResponse.PredictionResult, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this PredictionResult to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for PredictionResult
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Represents a ProductService */
                class ProductService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new ProductService 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 ProductService 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): ProductService;

                    /**
                     * Calls CreateProduct.
                     * @param request CreateProductRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Product
                     */
                    public createProduct(request: google.cloud.retail.v2beta.ICreateProductRequest, callback: google.cloud.retail.v2beta.ProductService.CreateProductCallback): void;

                    /**
                     * Calls CreateProduct.
                     * @param request CreateProductRequest message or plain object
                     * @returns Promise
                     */
                    public createProduct(request: google.cloud.retail.v2beta.ICreateProductRequest): Promise<google.cloud.retail.v2beta.Product>;

                    /**
                     * Calls GetProduct.
                     * @param request GetProductRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Product
                     */
                    public getProduct(request: google.cloud.retail.v2beta.IGetProductRequest, callback: google.cloud.retail.v2beta.ProductService.GetProductCallback): void;

                    /**
                     * Calls GetProduct.
                     * @param request GetProductRequest message or plain object
                     * @returns Promise
                     */
                    public getProduct(request: google.cloud.retail.v2beta.IGetProductRequest): Promise<google.cloud.retail.v2beta.Product>;

                    /**
                     * Calls ListProducts.
                     * @param request ListProductsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListProductsResponse
                     */
                    public listProducts(request: google.cloud.retail.v2beta.IListProductsRequest, callback: google.cloud.retail.v2beta.ProductService.ListProductsCallback): void;

                    /**
                     * Calls ListProducts.
                     * @param request ListProductsRequest message or plain object
                     * @returns Promise
                     */
                    public listProducts(request: google.cloud.retail.v2beta.IListProductsRequest): Promise<google.cloud.retail.v2beta.ListProductsResponse>;

                    /**
                     * Calls UpdateProduct.
                     * @param request UpdateProductRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Product
                     */
                    public updateProduct(request: google.cloud.retail.v2beta.IUpdateProductRequest, callback: google.cloud.retail.v2beta.ProductService.UpdateProductCallback): void;

                    /**
                     * Calls UpdateProduct.
                     * @param request UpdateProductRequest message or plain object
                     * @returns Promise
                     */
                    public updateProduct(request: google.cloud.retail.v2beta.IUpdateProductRequest): Promise<google.cloud.retail.v2beta.Product>;

                    /**
                     * Calls DeleteProduct.
                     * @param request DeleteProductRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Empty
                     */
                    public deleteProduct(request: google.cloud.retail.v2beta.IDeleteProductRequest, callback: google.cloud.retail.v2beta.ProductService.DeleteProductCallback): void;

                    /**
                     * Calls DeleteProduct.
                     * @param request DeleteProductRequest message or plain object
                     * @returns Promise
                     */
                    public deleteProduct(request: google.cloud.retail.v2beta.IDeleteProductRequest): Promise<google.protobuf.Empty>;

                    /**
                     * Calls PurgeProducts.
                     * @param request PurgeProductsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public purgeProducts(request: google.cloud.retail.v2beta.IPurgeProductsRequest, callback: google.cloud.retail.v2beta.ProductService.PurgeProductsCallback): void;

                    /**
                     * Calls PurgeProducts.
                     * @param request PurgeProductsRequest message or plain object
                     * @returns Promise
                     */
                    public purgeProducts(request: google.cloud.retail.v2beta.IPurgeProductsRequest): Promise<google.longrunning.Operation>;

                    /**
                     * Calls ImportProducts.
                     * @param request ImportProductsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public importProducts(request: google.cloud.retail.v2beta.IImportProductsRequest, callback: google.cloud.retail.v2beta.ProductService.ImportProductsCallback): void;

                    /**
                     * Calls ImportProducts.
                     * @param request ImportProductsRequest message or plain object
                     * @returns Promise
                     */
                    public importProducts(request: google.cloud.retail.v2beta.IImportProductsRequest): Promise<google.longrunning.Operation>;

                    /**
                     * Calls ExportProducts.
                     * @param request ExportProductsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public exportProducts(request: google.cloud.retail.v2beta.IExportProductsRequest, callback: google.cloud.retail.v2beta.ProductService.ExportProductsCallback): void;

                    /**
                     * Calls ExportProducts.
                     * @param request ExportProductsRequest message or plain object
                     * @returns Promise
                     */
                    public exportProducts(request: google.cloud.retail.v2beta.IExportProductsRequest): Promise<google.longrunning.Operation>;

                    /**
                     * Calls SetInventory.
                     * @param request SetInventoryRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public setInventory(request: google.cloud.retail.v2beta.ISetInventoryRequest, callback: google.cloud.retail.v2beta.ProductService.SetInventoryCallback): void;

                    /**
                     * Calls SetInventory.
                     * @param request SetInventoryRequest message or plain object
                     * @returns Promise
                     */
                    public setInventory(request: google.cloud.retail.v2beta.ISetInventoryRequest): Promise<google.longrunning.Operation>;

                    /**
                     * Calls AddFulfillmentPlaces.
                     * @param request AddFulfillmentPlacesRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public addFulfillmentPlaces(request: google.cloud.retail.v2beta.IAddFulfillmentPlacesRequest, callback: google.cloud.retail.v2beta.ProductService.AddFulfillmentPlacesCallback): void;

                    /**
                     * Calls AddFulfillmentPlaces.
                     * @param request AddFulfillmentPlacesRequest message or plain object
                     * @returns Promise
                     */
                    public addFulfillmentPlaces(request: google.cloud.retail.v2beta.IAddFulfillmentPlacesRequest): Promise<google.longrunning.Operation>;

                    /**
                     * Calls RemoveFulfillmentPlaces.
                     * @param request RemoveFulfillmentPlacesRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public removeFulfillmentPlaces(request: google.cloud.retail.v2beta.IRemoveFulfillmentPlacesRequest, callback: google.cloud.retail.v2beta.ProductService.RemoveFulfillmentPlacesCallback): void;

                    /**
                     * Calls RemoveFulfillmentPlaces.
                     * @param request RemoveFulfillmentPlacesRequest message or plain object
                     * @returns Promise
                     */
                    public removeFulfillmentPlaces(request: google.cloud.retail.v2beta.IRemoveFulfillmentPlacesRequest): Promise<google.longrunning.Operation>;

                    /**
                     * Calls AddLocalInventories.
                     * @param request AddLocalInventoriesRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public addLocalInventories(request: google.cloud.retail.v2beta.IAddLocalInventoriesRequest, callback: google.cloud.retail.v2beta.ProductService.AddLocalInventoriesCallback): void;

                    /**
                     * Calls AddLocalInventories.
                     * @param request AddLocalInventoriesRequest message or plain object
                     * @returns Promise
                     */
                    public addLocalInventories(request: google.cloud.retail.v2beta.IAddLocalInventoriesRequest): Promise<google.longrunning.Operation>;

                    /**
                     * Calls RemoveLocalInventories.
                     * @param request RemoveLocalInventoriesRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public removeLocalInventories(request: google.cloud.retail.v2beta.IRemoveLocalInventoriesRequest, callback: google.cloud.retail.v2beta.ProductService.RemoveLocalInventoriesCallback): void;

                    /**
                     * Calls RemoveLocalInventories.
                     * @param request RemoveLocalInventoriesRequest message or plain object
                     * @returns Promise
                     */
                    public removeLocalInventories(request: google.cloud.retail.v2beta.IRemoveLocalInventoriesRequest): Promise<google.longrunning.Operation>;
                }

                namespace ProductService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.ProductService|createProduct}.
                     * @param error Error, if any
                     * @param [response] Product
                     */
                    type CreateProductCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.Product) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.ProductService|getProduct}.
                     * @param error Error, if any
                     * @param [response] Product
                     */
                    type GetProductCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.Product) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.ProductService|listProducts}.
                     * @param error Error, if any
                     * @param [response] ListProductsResponse
                     */
                    type ListProductsCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.ListProductsResponse) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.ProductService|updateProduct}.
                     * @param error Error, if any
                     * @param [response] Product
                     */
                    type UpdateProductCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.Product) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.ProductService|deleteProduct}.
                     * @param error Error, if any
                     * @param [response] Empty
                     */
                    type DeleteProductCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.ProductService|purgeProducts}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type PurgeProductsCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.ProductService|importProducts}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type ImportProductsCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.ProductService|exportProducts}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type ExportProductsCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.ProductService|setInventory}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type SetInventoryCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.ProductService|addFulfillmentPlaces}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type AddFulfillmentPlacesCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.ProductService|removeFulfillmentPlaces}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type RemoveFulfillmentPlacesCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.ProductService|addLocalInventories}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type AddLocalInventoriesCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.ProductService|removeLocalInventories}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type RemoveLocalInventoriesCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;
                }

                /** Properties of a CreateProductRequest. */
                interface ICreateProductRequest {

                    /** CreateProductRequest parent */
                    parent?: (string|null);

                    /** CreateProductRequest product */
                    product?: (google.cloud.retail.v2beta.IProduct|null);

                    /** CreateProductRequest productId */
                    productId?: (string|null);
                }

                /** Represents a CreateProductRequest. */
                class CreateProductRequest implements ICreateProductRequest {

                    /**
                     * Constructs a new CreateProductRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.ICreateProductRequest);

                    /** CreateProductRequest parent. */
                    public parent: string;

                    /** CreateProductRequest product. */
                    public product?: (google.cloud.retail.v2beta.IProduct|null);

                    /** CreateProductRequest productId. */
                    public productId: string;

                    /**
                     * Creates a new CreateProductRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CreateProductRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.ICreateProductRequest): google.cloud.retail.v2beta.CreateProductRequest;

                    /**
                     * Encodes the specified CreateProductRequest message. Does not implicitly {@link google.cloud.retail.v2beta.CreateProductRequest.verify|verify} messages.
                     * @param message CreateProductRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.ICreateProductRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CreateProductRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.CreateProductRequest.verify|verify} messages.
                     * @param message CreateProductRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.ICreateProductRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CreateProductRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CreateProductRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.CreateProductRequest;

                    /**
                     * Decodes a CreateProductRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CreateProductRequest
                     * @throws {Error} If the payload 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.retail.v2beta.CreateProductRequest;

                    /**
                     * Verifies a CreateProductRequest message.
                     * @param message Plain 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 CreateProductRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CreateProductRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.CreateProductRequest;

                    /**
                     * Creates a plain object from a CreateProductRequest message. Also converts values to other types if specified.
                     * @param message CreateProductRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.CreateProductRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CreateProductRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CreateProductRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetProductRequest. */
                interface IGetProductRequest {

                    /** GetProductRequest name */
                    name?: (string|null);
                }

                /** Represents a GetProductRequest. */
                class GetProductRequest implements IGetProductRequest {

                    /**
                     * Constructs a new GetProductRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IGetProductRequest);

                    /** GetProductRequest name. */
                    public name: string;

                    /**
                     * Creates a new GetProductRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetProductRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IGetProductRequest): google.cloud.retail.v2beta.GetProductRequest;

                    /**
                     * Encodes the specified GetProductRequest message. Does not implicitly {@link google.cloud.retail.v2beta.GetProductRequest.verify|verify} messages.
                     * @param message GetProductRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IGetProductRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetProductRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.GetProductRequest.verify|verify} messages.
                     * @param message GetProductRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IGetProductRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetProductRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetProductRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.GetProductRequest;

                    /**
                     * Decodes a GetProductRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetProductRequest
                     * @throws {Error} If the payload 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.retail.v2beta.GetProductRequest;

                    /**
                     * Verifies a GetProductRequest message.
                     * @param message Plain 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 GetProductRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetProductRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.GetProductRequest;

                    /**
                     * Creates a plain object from a GetProductRequest message. Also converts values to other types if specified.
                     * @param message GetProductRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.GetProductRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetProductRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetProductRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateProductRequest. */
                interface IUpdateProductRequest {

                    /** UpdateProductRequest product */
                    product?: (google.cloud.retail.v2beta.IProduct|null);

                    /** UpdateProductRequest updateMask */
                    updateMask?: (google.protobuf.IFieldMask|null);

                    /** UpdateProductRequest allowMissing */
                    allowMissing?: (boolean|null);
                }

                /** Represents an UpdateProductRequest. */
                class UpdateProductRequest implements IUpdateProductRequest {

                    /**
                     * Constructs a new UpdateProductRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IUpdateProductRequest);

                    /** UpdateProductRequest product. */
                    public product?: (google.cloud.retail.v2beta.IProduct|null);

                    /** UpdateProductRequest updateMask. */
                    public updateMask?: (google.protobuf.IFieldMask|null);

                    /** UpdateProductRequest allowMissing. */
                    public allowMissing: boolean;

                    /**
                     * Creates a new UpdateProductRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateProductRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IUpdateProductRequest): google.cloud.retail.v2beta.UpdateProductRequest;

                    /**
                     * Encodes the specified UpdateProductRequest message. Does not implicitly {@link google.cloud.retail.v2beta.UpdateProductRequest.verify|verify} messages.
                     * @param message UpdateProductRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IUpdateProductRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateProductRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.UpdateProductRequest.verify|verify} messages.
                     * @param message UpdateProductRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IUpdateProductRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateProductRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateProductRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.UpdateProductRequest;

                    /**
                     * Decodes an UpdateProductRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateProductRequest
                     * @throws {Error} If the payload 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.retail.v2beta.UpdateProductRequest;

                    /**
                     * Verifies an UpdateProductRequest message.
                     * @param message Plain 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 UpdateProductRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateProductRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.UpdateProductRequest;

                    /**
                     * Creates a plain object from an UpdateProductRequest message. Also converts values to other types if specified.
                     * @param message UpdateProductRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.UpdateProductRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateProductRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateProductRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeleteProductRequest. */
                interface IDeleteProductRequest {

                    /** DeleteProductRequest name */
                    name?: (string|null);
                }

                /** Represents a DeleteProductRequest. */
                class DeleteProductRequest implements IDeleteProductRequest {

                    /**
                     * Constructs a new DeleteProductRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IDeleteProductRequest);

                    /** DeleteProductRequest name. */
                    public name: string;

                    /**
                     * Creates a new DeleteProductRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeleteProductRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IDeleteProductRequest): google.cloud.retail.v2beta.DeleteProductRequest;

                    /**
                     * Encodes the specified DeleteProductRequest message. Does not implicitly {@link google.cloud.retail.v2beta.DeleteProductRequest.verify|verify} messages.
                     * @param message DeleteProductRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IDeleteProductRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeleteProductRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.DeleteProductRequest.verify|verify} messages.
                     * @param message DeleteProductRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IDeleteProductRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeleteProductRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeleteProductRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.DeleteProductRequest;

                    /**
                     * Decodes a DeleteProductRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeleteProductRequest
                     * @throws {Error} If the payload 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.retail.v2beta.DeleteProductRequest;

                    /**
                     * Verifies a DeleteProductRequest message.
                     * @param message Plain 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 DeleteProductRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeleteProductRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.DeleteProductRequest;

                    /**
                     * Creates a plain object from a DeleteProductRequest message. Also converts values to other types if specified.
                     * @param message DeleteProductRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.DeleteProductRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeleteProductRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeleteProductRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListProductsRequest. */
                interface IListProductsRequest {

                    /** ListProductsRequest parent */
                    parent?: (string|null);

                    /** ListProductsRequest pageSize */
                    pageSize?: (number|null);

                    /** ListProductsRequest pageToken */
                    pageToken?: (string|null);

                    /** ListProductsRequest filter */
                    filter?: (string|null);

                    /** ListProductsRequest readMask */
                    readMask?: (google.protobuf.IFieldMask|null);
                }

                /** Represents a ListProductsRequest. */
                class ListProductsRequest implements IListProductsRequest {

                    /**
                     * Constructs a new ListProductsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IListProductsRequest);

                    /** ListProductsRequest parent. */
                    public parent: string;

                    /** ListProductsRequest pageSize. */
                    public pageSize: number;

                    /** ListProductsRequest pageToken. */
                    public pageToken: string;

                    /** ListProductsRequest filter. */
                    public filter: string;

                    /** ListProductsRequest readMask. */
                    public readMask?: (google.protobuf.IFieldMask|null);

                    /**
                     * Creates a new ListProductsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListProductsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IListProductsRequest): google.cloud.retail.v2beta.ListProductsRequest;

                    /**
                     * Encodes the specified ListProductsRequest message. Does not implicitly {@link google.cloud.retail.v2beta.ListProductsRequest.verify|verify} messages.
                     * @param message ListProductsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IListProductsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListProductsRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ListProductsRequest.verify|verify} messages.
                     * @param message ListProductsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IListProductsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListProductsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListProductsRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.ListProductsRequest;

                    /**
                     * Decodes a ListProductsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListProductsRequest
                     * @throws {Error} If the payload 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.retail.v2beta.ListProductsRequest;

                    /**
                     * Verifies a ListProductsRequest message.
                     * @param message Plain 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 ListProductsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListProductsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ListProductsRequest;

                    /**
                     * Creates a plain object from a ListProductsRequest message. Also converts values to other types if specified.
                     * @param message ListProductsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ListProductsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListProductsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListProductsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListProductsResponse. */
                interface IListProductsResponse {

                    /** ListProductsResponse products */
                    products?: (google.cloud.retail.v2beta.IProduct[]|null);

                    /** ListProductsResponse nextPageToken */
                    nextPageToken?: (string|null);
                }

                /** Represents a ListProductsResponse. */
                class ListProductsResponse implements IListProductsResponse {

                    /**
                     * Constructs a new ListProductsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IListProductsResponse);

                    /** ListProductsResponse products. */
                    public products: google.cloud.retail.v2beta.IProduct[];

                    /** ListProductsResponse nextPageToken. */
                    public nextPageToken: string;

                    /**
                     * Creates a new ListProductsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListProductsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IListProductsResponse): google.cloud.retail.v2beta.ListProductsResponse;

                    /**
                     * Encodes the specified ListProductsResponse message. Does not implicitly {@link google.cloud.retail.v2beta.ListProductsResponse.verify|verify} messages.
                     * @param message ListProductsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IListProductsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListProductsResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ListProductsResponse.verify|verify} messages.
                     * @param message ListProductsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IListProductsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListProductsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListProductsResponse
                     * @throws {Error} If the payload is not 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.retail.v2beta.ListProductsResponse;

                    /**
                     * Decodes a ListProductsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListProductsResponse
                     * @throws {Error} If the payload 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.retail.v2beta.ListProductsResponse;

                    /**
                     * Verifies a ListProductsResponse message.
                     * @param message Plain 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 ListProductsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListProductsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ListProductsResponse;

                    /**
                     * Creates a plain object from a ListProductsResponse message. Also converts values to other types if specified.
                     * @param message ListProductsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ListProductsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListProductsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListProductsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SetInventoryRequest. */
                interface ISetInventoryRequest {

                    /** SetInventoryRequest inventory */
                    inventory?: (google.cloud.retail.v2beta.IProduct|null);

                    /** SetInventoryRequest setMask */
                    setMask?: (google.protobuf.IFieldMask|null);

                    /** SetInventoryRequest setTime */
                    setTime?: (google.protobuf.ITimestamp|null);

                    /** SetInventoryRequest allowMissing */
                    allowMissing?: (boolean|null);
                }

                /** Represents a SetInventoryRequest. */
                class SetInventoryRequest implements ISetInventoryRequest {

                    /**
                     * Constructs a new SetInventoryRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.ISetInventoryRequest);

                    /** SetInventoryRequest inventory. */
                    public inventory?: (google.cloud.retail.v2beta.IProduct|null);

                    /** SetInventoryRequest setMask. */
                    public setMask?: (google.protobuf.IFieldMask|null);

                    /** SetInventoryRequest setTime. */
                    public setTime?: (google.protobuf.ITimestamp|null);

                    /** SetInventoryRequest allowMissing. */
                    public allowMissing: boolean;

                    /**
                     * Creates a new SetInventoryRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SetInventoryRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.ISetInventoryRequest): google.cloud.retail.v2beta.SetInventoryRequest;

                    /**
                     * Encodes the specified SetInventoryRequest message. Does not implicitly {@link google.cloud.retail.v2beta.SetInventoryRequest.verify|verify} messages.
                     * @param message SetInventoryRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.ISetInventoryRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SetInventoryRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.SetInventoryRequest.verify|verify} messages.
                     * @param message SetInventoryRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.ISetInventoryRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SetInventoryRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SetInventoryRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.SetInventoryRequest;

                    /**
                     * Decodes a SetInventoryRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SetInventoryRequest
                     * @throws {Error} If the payload 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.retail.v2beta.SetInventoryRequest;

                    /**
                     * Verifies a SetInventoryRequest message.
                     * @param message Plain 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 SetInventoryRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SetInventoryRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.SetInventoryRequest;

                    /**
                     * Creates a plain object from a SetInventoryRequest message. Also converts values to other types if specified.
                     * @param message SetInventoryRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.SetInventoryRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SetInventoryRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SetInventoryRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SetInventoryMetadata. */
                interface ISetInventoryMetadata {
                }

                /** Represents a SetInventoryMetadata. */
                class SetInventoryMetadata implements ISetInventoryMetadata {

                    /**
                     * Constructs a new SetInventoryMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.ISetInventoryMetadata);

                    /**
                     * Creates a new SetInventoryMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SetInventoryMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.ISetInventoryMetadata): google.cloud.retail.v2beta.SetInventoryMetadata;

                    /**
                     * Encodes the specified SetInventoryMetadata message. Does not implicitly {@link google.cloud.retail.v2beta.SetInventoryMetadata.verify|verify} messages.
                     * @param message SetInventoryMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.ISetInventoryMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SetInventoryMetadata message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.SetInventoryMetadata.verify|verify} messages.
                     * @param message SetInventoryMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.ISetInventoryMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SetInventoryMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SetInventoryMetadata
                     * @throws {Error} If the payload is not 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.retail.v2beta.SetInventoryMetadata;

                    /**
                     * Decodes a SetInventoryMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SetInventoryMetadata
                     * @throws {Error} If the payload 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.retail.v2beta.SetInventoryMetadata;

                    /**
                     * Verifies a SetInventoryMetadata message.
                     * @param message Plain 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 SetInventoryMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SetInventoryMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.SetInventoryMetadata;

                    /**
                     * Creates a plain object from a SetInventoryMetadata message. Also converts values to other types if specified.
                     * @param message SetInventoryMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.SetInventoryMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SetInventoryMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SetInventoryMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SetInventoryResponse. */
                interface ISetInventoryResponse {
                }

                /** Represents a SetInventoryResponse. */
                class SetInventoryResponse implements ISetInventoryResponse {

                    /**
                     * Constructs a new SetInventoryResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.ISetInventoryResponse);

                    /**
                     * Creates a new SetInventoryResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SetInventoryResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.ISetInventoryResponse): google.cloud.retail.v2beta.SetInventoryResponse;

                    /**
                     * Encodes the specified SetInventoryResponse message. Does not implicitly {@link google.cloud.retail.v2beta.SetInventoryResponse.verify|verify} messages.
                     * @param message SetInventoryResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.ISetInventoryResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SetInventoryResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.SetInventoryResponse.verify|verify} messages.
                     * @param message SetInventoryResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.ISetInventoryResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SetInventoryResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SetInventoryResponse
                     * @throws {Error} If the payload is not 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.retail.v2beta.SetInventoryResponse;

                    /**
                     * Decodes a SetInventoryResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SetInventoryResponse
                     * @throws {Error} If the payload 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.retail.v2beta.SetInventoryResponse;

                    /**
                     * Verifies a SetInventoryResponse message.
                     * @param message Plain 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 SetInventoryResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SetInventoryResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.SetInventoryResponse;

                    /**
                     * Creates a plain object from a SetInventoryResponse message. Also converts values to other types if specified.
                     * @param message SetInventoryResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.SetInventoryResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SetInventoryResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SetInventoryResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an AddFulfillmentPlacesRequest. */
                interface IAddFulfillmentPlacesRequest {

                    /** AddFulfillmentPlacesRequest product */
                    product?: (string|null);

                    /** AddFulfillmentPlacesRequest type */
                    type?: (string|null);

                    /** AddFulfillmentPlacesRequest placeIds */
                    placeIds?: (string[]|null);

                    /** AddFulfillmentPlacesRequest addTime */
                    addTime?: (google.protobuf.ITimestamp|null);

                    /** AddFulfillmentPlacesRequest allowMissing */
                    allowMissing?: (boolean|null);
                }

                /** Represents an AddFulfillmentPlacesRequest. */
                class AddFulfillmentPlacesRequest implements IAddFulfillmentPlacesRequest {

                    /**
                     * Constructs a new AddFulfillmentPlacesRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IAddFulfillmentPlacesRequest);

                    /** AddFulfillmentPlacesRequest product. */
                    public product: string;

                    /** AddFulfillmentPlacesRequest type. */
                    public type: string;

                    /** AddFulfillmentPlacesRequest placeIds. */
                    public placeIds: string[];

                    /** AddFulfillmentPlacesRequest addTime. */
                    public addTime?: (google.protobuf.ITimestamp|null);

                    /** AddFulfillmentPlacesRequest allowMissing. */
                    public allowMissing: boolean;

                    /**
                     * Creates a new AddFulfillmentPlacesRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns AddFulfillmentPlacesRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IAddFulfillmentPlacesRequest): google.cloud.retail.v2beta.AddFulfillmentPlacesRequest;

                    /**
                     * Encodes the specified AddFulfillmentPlacesRequest message. Does not implicitly {@link google.cloud.retail.v2beta.AddFulfillmentPlacesRequest.verify|verify} messages.
                     * @param message AddFulfillmentPlacesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IAddFulfillmentPlacesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified AddFulfillmentPlacesRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.AddFulfillmentPlacesRequest.verify|verify} messages.
                     * @param message AddFulfillmentPlacesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IAddFulfillmentPlacesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an AddFulfillmentPlacesRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns AddFulfillmentPlacesRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.AddFulfillmentPlacesRequest;

                    /**
                     * Decodes an AddFulfillmentPlacesRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns AddFulfillmentPlacesRequest
                     * @throws {Error} If the payload 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.retail.v2beta.AddFulfillmentPlacesRequest;

                    /**
                     * Verifies an AddFulfillmentPlacesRequest message.
                     * @param message Plain 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 AddFulfillmentPlacesRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns AddFulfillmentPlacesRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.AddFulfillmentPlacesRequest;

                    /**
                     * Creates a plain object from an AddFulfillmentPlacesRequest message. Also converts values to other types if specified.
                     * @param message AddFulfillmentPlacesRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.AddFulfillmentPlacesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this AddFulfillmentPlacesRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for AddFulfillmentPlacesRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an AddFulfillmentPlacesMetadata. */
                interface IAddFulfillmentPlacesMetadata {
                }

                /** Represents an AddFulfillmentPlacesMetadata. */
                class AddFulfillmentPlacesMetadata implements IAddFulfillmentPlacesMetadata {

                    /**
                     * Constructs a new AddFulfillmentPlacesMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IAddFulfillmentPlacesMetadata);

                    /**
                     * Creates a new AddFulfillmentPlacesMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns AddFulfillmentPlacesMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IAddFulfillmentPlacesMetadata): google.cloud.retail.v2beta.AddFulfillmentPlacesMetadata;

                    /**
                     * Encodes the specified AddFulfillmentPlacesMetadata message. Does not implicitly {@link google.cloud.retail.v2beta.AddFulfillmentPlacesMetadata.verify|verify} messages.
                     * @param message AddFulfillmentPlacesMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IAddFulfillmentPlacesMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified AddFulfillmentPlacesMetadata message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.AddFulfillmentPlacesMetadata.verify|verify} messages.
                     * @param message AddFulfillmentPlacesMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IAddFulfillmentPlacesMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an AddFulfillmentPlacesMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns AddFulfillmentPlacesMetadata
                     * @throws {Error} If the payload is not 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.retail.v2beta.AddFulfillmentPlacesMetadata;

                    /**
                     * Decodes an AddFulfillmentPlacesMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns AddFulfillmentPlacesMetadata
                     * @throws {Error} If the payload 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.retail.v2beta.AddFulfillmentPlacesMetadata;

                    /**
                     * Verifies an AddFulfillmentPlacesMetadata message.
                     * @param message Plain 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 AddFulfillmentPlacesMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns AddFulfillmentPlacesMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.AddFulfillmentPlacesMetadata;

                    /**
                     * Creates a plain object from an AddFulfillmentPlacesMetadata message. Also converts values to other types if specified.
                     * @param message AddFulfillmentPlacesMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.AddFulfillmentPlacesMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this AddFulfillmentPlacesMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for AddFulfillmentPlacesMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an AddFulfillmentPlacesResponse. */
                interface IAddFulfillmentPlacesResponse {
                }

                /** Represents an AddFulfillmentPlacesResponse. */
                class AddFulfillmentPlacesResponse implements IAddFulfillmentPlacesResponse {

                    /**
                     * Constructs a new AddFulfillmentPlacesResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IAddFulfillmentPlacesResponse);

                    /**
                     * Creates a new AddFulfillmentPlacesResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns AddFulfillmentPlacesResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IAddFulfillmentPlacesResponse): google.cloud.retail.v2beta.AddFulfillmentPlacesResponse;

                    /**
                     * Encodes the specified AddFulfillmentPlacesResponse message. Does not implicitly {@link google.cloud.retail.v2beta.AddFulfillmentPlacesResponse.verify|verify} messages.
                     * @param message AddFulfillmentPlacesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IAddFulfillmentPlacesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified AddFulfillmentPlacesResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.AddFulfillmentPlacesResponse.verify|verify} messages.
                     * @param message AddFulfillmentPlacesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IAddFulfillmentPlacesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an AddFulfillmentPlacesResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns AddFulfillmentPlacesResponse
                     * @throws {Error} If the payload is not 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.retail.v2beta.AddFulfillmentPlacesResponse;

                    /**
                     * Decodes an AddFulfillmentPlacesResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns AddFulfillmentPlacesResponse
                     * @throws {Error} If the payload 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.retail.v2beta.AddFulfillmentPlacesResponse;

                    /**
                     * Verifies an AddFulfillmentPlacesResponse message.
                     * @param message Plain 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 AddFulfillmentPlacesResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns AddFulfillmentPlacesResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.AddFulfillmentPlacesResponse;

                    /**
                     * Creates a plain object from an AddFulfillmentPlacesResponse message. Also converts values to other types if specified.
                     * @param message AddFulfillmentPlacesResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.AddFulfillmentPlacesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this AddFulfillmentPlacesResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for AddFulfillmentPlacesResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an AddLocalInventoriesRequest. */
                interface IAddLocalInventoriesRequest {

                    /** AddLocalInventoriesRequest product */
                    product?: (string|null);

                    /** AddLocalInventoriesRequest localInventories */
                    localInventories?: (google.cloud.retail.v2beta.ILocalInventory[]|null);

                    /** AddLocalInventoriesRequest addMask */
                    addMask?: (google.protobuf.IFieldMask|null);

                    /** AddLocalInventoriesRequest addTime */
                    addTime?: (google.protobuf.ITimestamp|null);

                    /** AddLocalInventoriesRequest allowMissing */
                    allowMissing?: (boolean|null);
                }

                /** Represents an AddLocalInventoriesRequest. */
                class AddLocalInventoriesRequest implements IAddLocalInventoriesRequest {

                    /**
                     * Constructs a new AddLocalInventoriesRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IAddLocalInventoriesRequest);

                    /** AddLocalInventoriesRequest product. */
                    public product: string;

                    /** AddLocalInventoriesRequest localInventories. */
                    public localInventories: google.cloud.retail.v2beta.ILocalInventory[];

                    /** AddLocalInventoriesRequest addMask. */
                    public addMask?: (google.protobuf.IFieldMask|null);

                    /** AddLocalInventoriesRequest addTime. */
                    public addTime?: (google.protobuf.ITimestamp|null);

                    /** AddLocalInventoriesRequest allowMissing. */
                    public allowMissing: boolean;

                    /**
                     * Creates a new AddLocalInventoriesRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns AddLocalInventoriesRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IAddLocalInventoriesRequest): google.cloud.retail.v2beta.AddLocalInventoriesRequest;

                    /**
                     * Encodes the specified AddLocalInventoriesRequest message. Does not implicitly {@link google.cloud.retail.v2beta.AddLocalInventoriesRequest.verify|verify} messages.
                     * @param message AddLocalInventoriesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IAddLocalInventoriesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified AddLocalInventoriesRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.AddLocalInventoriesRequest.verify|verify} messages.
                     * @param message AddLocalInventoriesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IAddLocalInventoriesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an AddLocalInventoriesRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns AddLocalInventoriesRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.AddLocalInventoriesRequest;

                    /**
                     * Decodes an AddLocalInventoriesRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns AddLocalInventoriesRequest
                     * @throws {Error} If the payload 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.retail.v2beta.AddLocalInventoriesRequest;

                    /**
                     * Verifies an AddLocalInventoriesRequest message.
                     * @param message Plain 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 AddLocalInventoriesRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns AddLocalInventoriesRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.AddLocalInventoriesRequest;

                    /**
                     * Creates a plain object from an AddLocalInventoriesRequest message. Also converts values to other types if specified.
                     * @param message AddLocalInventoriesRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.AddLocalInventoriesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this AddLocalInventoriesRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for AddLocalInventoriesRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an AddLocalInventoriesMetadata. */
                interface IAddLocalInventoriesMetadata {
                }

                /** Represents an AddLocalInventoriesMetadata. */
                class AddLocalInventoriesMetadata implements IAddLocalInventoriesMetadata {

                    /**
                     * Constructs a new AddLocalInventoriesMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IAddLocalInventoriesMetadata);

                    /**
                     * Creates a new AddLocalInventoriesMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns AddLocalInventoriesMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IAddLocalInventoriesMetadata): google.cloud.retail.v2beta.AddLocalInventoriesMetadata;

                    /**
                     * Encodes the specified AddLocalInventoriesMetadata message. Does not implicitly {@link google.cloud.retail.v2beta.AddLocalInventoriesMetadata.verify|verify} messages.
                     * @param message AddLocalInventoriesMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IAddLocalInventoriesMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified AddLocalInventoriesMetadata message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.AddLocalInventoriesMetadata.verify|verify} messages.
                     * @param message AddLocalInventoriesMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IAddLocalInventoriesMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an AddLocalInventoriesMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns AddLocalInventoriesMetadata
                     * @throws {Error} If the payload is not 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.retail.v2beta.AddLocalInventoriesMetadata;

                    /**
                     * Decodes an AddLocalInventoriesMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns AddLocalInventoriesMetadata
                     * @throws {Error} If the payload 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.retail.v2beta.AddLocalInventoriesMetadata;

                    /**
                     * Verifies an AddLocalInventoriesMetadata message.
                     * @param message Plain 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 AddLocalInventoriesMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns AddLocalInventoriesMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.AddLocalInventoriesMetadata;

                    /**
                     * Creates a plain object from an AddLocalInventoriesMetadata message. Also converts values to other types if specified.
                     * @param message AddLocalInventoriesMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.AddLocalInventoriesMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this AddLocalInventoriesMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for AddLocalInventoriesMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an AddLocalInventoriesResponse. */
                interface IAddLocalInventoriesResponse {
                }

                /** Represents an AddLocalInventoriesResponse. */
                class AddLocalInventoriesResponse implements IAddLocalInventoriesResponse {

                    /**
                     * Constructs a new AddLocalInventoriesResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IAddLocalInventoriesResponse);

                    /**
                     * Creates a new AddLocalInventoriesResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns AddLocalInventoriesResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IAddLocalInventoriesResponse): google.cloud.retail.v2beta.AddLocalInventoriesResponse;

                    /**
                     * Encodes the specified AddLocalInventoriesResponse message. Does not implicitly {@link google.cloud.retail.v2beta.AddLocalInventoriesResponse.verify|verify} messages.
                     * @param message AddLocalInventoriesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IAddLocalInventoriesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified AddLocalInventoriesResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.AddLocalInventoriesResponse.verify|verify} messages.
                     * @param message AddLocalInventoriesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IAddLocalInventoriesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an AddLocalInventoriesResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns AddLocalInventoriesResponse
                     * @throws {Error} If the payload is not 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.retail.v2beta.AddLocalInventoriesResponse;

                    /**
                     * Decodes an AddLocalInventoriesResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns AddLocalInventoriesResponse
                     * @throws {Error} If the payload 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.retail.v2beta.AddLocalInventoriesResponse;

                    /**
                     * Verifies an AddLocalInventoriesResponse message.
                     * @param message Plain 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 AddLocalInventoriesResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns AddLocalInventoriesResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.AddLocalInventoriesResponse;

                    /**
                     * Creates a plain object from an AddLocalInventoriesResponse message. Also converts values to other types if specified.
                     * @param message AddLocalInventoriesResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.AddLocalInventoriesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this AddLocalInventoriesResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for AddLocalInventoriesResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RemoveLocalInventoriesRequest. */
                interface IRemoveLocalInventoriesRequest {

                    /** RemoveLocalInventoriesRequest product */
                    product?: (string|null);

                    /** RemoveLocalInventoriesRequest placeIds */
                    placeIds?: (string[]|null);

                    /** RemoveLocalInventoriesRequest removeTime */
                    removeTime?: (google.protobuf.ITimestamp|null);

                    /** RemoveLocalInventoriesRequest allowMissing */
                    allowMissing?: (boolean|null);
                }

                /** Represents a RemoveLocalInventoriesRequest. */
                class RemoveLocalInventoriesRequest implements IRemoveLocalInventoriesRequest {

                    /**
                     * Constructs a new RemoveLocalInventoriesRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IRemoveLocalInventoriesRequest);

                    /** RemoveLocalInventoriesRequest product. */
                    public product: string;

                    /** RemoveLocalInventoriesRequest placeIds. */
                    public placeIds: string[];

                    /** RemoveLocalInventoriesRequest removeTime. */
                    public removeTime?: (google.protobuf.ITimestamp|null);

                    /** RemoveLocalInventoriesRequest allowMissing. */
                    public allowMissing: boolean;

                    /**
                     * Creates a new RemoveLocalInventoriesRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RemoveLocalInventoriesRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IRemoveLocalInventoriesRequest): google.cloud.retail.v2beta.RemoveLocalInventoriesRequest;

                    /**
                     * Encodes the specified RemoveLocalInventoriesRequest message. Does not implicitly {@link google.cloud.retail.v2beta.RemoveLocalInventoriesRequest.verify|verify} messages.
                     * @param message RemoveLocalInventoriesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IRemoveLocalInventoriesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RemoveLocalInventoriesRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.RemoveLocalInventoriesRequest.verify|verify} messages.
                     * @param message RemoveLocalInventoriesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IRemoveLocalInventoriesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RemoveLocalInventoriesRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RemoveLocalInventoriesRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.RemoveLocalInventoriesRequest;

                    /**
                     * Decodes a RemoveLocalInventoriesRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RemoveLocalInventoriesRequest
                     * @throws {Error} If the payload 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.retail.v2beta.RemoveLocalInventoriesRequest;

                    /**
                     * Verifies a RemoveLocalInventoriesRequest message.
                     * @param message Plain 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 RemoveLocalInventoriesRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RemoveLocalInventoriesRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.RemoveLocalInventoriesRequest;

                    /**
                     * Creates a plain object from a RemoveLocalInventoriesRequest message. Also converts values to other types if specified.
                     * @param message RemoveLocalInventoriesRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.RemoveLocalInventoriesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RemoveLocalInventoriesRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RemoveLocalInventoriesRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RemoveLocalInventoriesMetadata. */
                interface IRemoveLocalInventoriesMetadata {
                }

                /** Represents a RemoveLocalInventoriesMetadata. */
                class RemoveLocalInventoriesMetadata implements IRemoveLocalInventoriesMetadata {

                    /**
                     * Constructs a new RemoveLocalInventoriesMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IRemoveLocalInventoriesMetadata);

                    /**
                     * Creates a new RemoveLocalInventoriesMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RemoveLocalInventoriesMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IRemoveLocalInventoriesMetadata): google.cloud.retail.v2beta.RemoveLocalInventoriesMetadata;

                    /**
                     * Encodes the specified RemoveLocalInventoriesMetadata message. Does not implicitly {@link google.cloud.retail.v2beta.RemoveLocalInventoriesMetadata.verify|verify} messages.
                     * @param message RemoveLocalInventoriesMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IRemoveLocalInventoriesMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RemoveLocalInventoriesMetadata message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.RemoveLocalInventoriesMetadata.verify|verify} messages.
                     * @param message RemoveLocalInventoriesMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IRemoveLocalInventoriesMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RemoveLocalInventoriesMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RemoveLocalInventoriesMetadata
                     * @throws {Error} If the payload is not 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.retail.v2beta.RemoveLocalInventoriesMetadata;

                    /**
                     * Decodes a RemoveLocalInventoriesMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RemoveLocalInventoriesMetadata
                     * @throws {Error} If the payload 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.retail.v2beta.RemoveLocalInventoriesMetadata;

                    /**
                     * Verifies a RemoveLocalInventoriesMetadata message.
                     * @param message Plain 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 RemoveLocalInventoriesMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RemoveLocalInventoriesMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.RemoveLocalInventoriesMetadata;

                    /**
                     * Creates a plain object from a RemoveLocalInventoriesMetadata message. Also converts values to other types if specified.
                     * @param message RemoveLocalInventoriesMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.RemoveLocalInventoriesMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RemoveLocalInventoriesMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RemoveLocalInventoriesMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RemoveLocalInventoriesResponse. */
                interface IRemoveLocalInventoriesResponse {
                }

                /** Represents a RemoveLocalInventoriesResponse. */
                class RemoveLocalInventoriesResponse implements IRemoveLocalInventoriesResponse {

                    /**
                     * Constructs a new RemoveLocalInventoriesResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IRemoveLocalInventoriesResponse);

                    /**
                     * Creates a new RemoveLocalInventoriesResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RemoveLocalInventoriesResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IRemoveLocalInventoriesResponse): google.cloud.retail.v2beta.RemoveLocalInventoriesResponse;

                    /**
                     * Encodes the specified RemoveLocalInventoriesResponse message. Does not implicitly {@link google.cloud.retail.v2beta.RemoveLocalInventoriesResponse.verify|verify} messages.
                     * @param message RemoveLocalInventoriesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IRemoveLocalInventoriesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RemoveLocalInventoriesResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.RemoveLocalInventoriesResponse.verify|verify} messages.
                     * @param message RemoveLocalInventoriesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IRemoveLocalInventoriesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RemoveLocalInventoriesResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RemoveLocalInventoriesResponse
                     * @throws {Error} If the payload is not 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.retail.v2beta.RemoveLocalInventoriesResponse;

                    /**
                     * Decodes a RemoveLocalInventoriesResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RemoveLocalInventoriesResponse
                     * @throws {Error} If the payload 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.retail.v2beta.RemoveLocalInventoriesResponse;

                    /**
                     * Verifies a RemoveLocalInventoriesResponse message.
                     * @param message Plain 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 RemoveLocalInventoriesResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RemoveLocalInventoriesResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.RemoveLocalInventoriesResponse;

                    /**
                     * Creates a plain object from a RemoveLocalInventoriesResponse message. Also converts values to other types if specified.
                     * @param message RemoveLocalInventoriesResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.RemoveLocalInventoriesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RemoveLocalInventoriesResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RemoveLocalInventoriesResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RemoveFulfillmentPlacesRequest. */
                interface IRemoveFulfillmentPlacesRequest {

                    /** RemoveFulfillmentPlacesRequest product */
                    product?: (string|null);

                    /** RemoveFulfillmentPlacesRequest type */
                    type?: (string|null);

                    /** RemoveFulfillmentPlacesRequest placeIds */
                    placeIds?: (string[]|null);

                    /** RemoveFulfillmentPlacesRequest removeTime */
                    removeTime?: (google.protobuf.ITimestamp|null);

                    /** RemoveFulfillmentPlacesRequest allowMissing */
                    allowMissing?: (boolean|null);
                }

                /** Represents a RemoveFulfillmentPlacesRequest. */
                class RemoveFulfillmentPlacesRequest implements IRemoveFulfillmentPlacesRequest {

                    /**
                     * Constructs a new RemoveFulfillmentPlacesRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IRemoveFulfillmentPlacesRequest);

                    /** RemoveFulfillmentPlacesRequest product. */
                    public product: string;

                    /** RemoveFulfillmentPlacesRequest type. */
                    public type: string;

                    /** RemoveFulfillmentPlacesRequest placeIds. */
                    public placeIds: string[];

                    /** RemoveFulfillmentPlacesRequest removeTime. */
                    public removeTime?: (google.protobuf.ITimestamp|null);

                    /** RemoveFulfillmentPlacesRequest allowMissing. */
                    public allowMissing: boolean;

                    /**
                     * Creates a new RemoveFulfillmentPlacesRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RemoveFulfillmentPlacesRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IRemoveFulfillmentPlacesRequest): google.cloud.retail.v2beta.RemoveFulfillmentPlacesRequest;

                    /**
                     * Encodes the specified RemoveFulfillmentPlacesRequest message. Does not implicitly {@link google.cloud.retail.v2beta.RemoveFulfillmentPlacesRequest.verify|verify} messages.
                     * @param message RemoveFulfillmentPlacesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IRemoveFulfillmentPlacesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RemoveFulfillmentPlacesRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.RemoveFulfillmentPlacesRequest.verify|verify} messages.
                     * @param message RemoveFulfillmentPlacesRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IRemoveFulfillmentPlacesRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RemoveFulfillmentPlacesRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RemoveFulfillmentPlacesRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.RemoveFulfillmentPlacesRequest;

                    /**
                     * Decodes a RemoveFulfillmentPlacesRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RemoveFulfillmentPlacesRequest
                     * @throws {Error} If the payload 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.retail.v2beta.RemoveFulfillmentPlacesRequest;

                    /**
                     * Verifies a RemoveFulfillmentPlacesRequest message.
                     * @param message Plain 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 RemoveFulfillmentPlacesRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RemoveFulfillmentPlacesRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.RemoveFulfillmentPlacesRequest;

                    /**
                     * Creates a plain object from a RemoveFulfillmentPlacesRequest message. Also converts values to other types if specified.
                     * @param message RemoveFulfillmentPlacesRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.RemoveFulfillmentPlacesRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RemoveFulfillmentPlacesRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RemoveFulfillmentPlacesRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RemoveFulfillmentPlacesMetadata. */
                interface IRemoveFulfillmentPlacesMetadata {
                }

                /** Represents a RemoveFulfillmentPlacesMetadata. */
                class RemoveFulfillmentPlacesMetadata implements IRemoveFulfillmentPlacesMetadata {

                    /**
                     * Constructs a new RemoveFulfillmentPlacesMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IRemoveFulfillmentPlacesMetadata);

                    /**
                     * Creates a new RemoveFulfillmentPlacesMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RemoveFulfillmentPlacesMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IRemoveFulfillmentPlacesMetadata): google.cloud.retail.v2beta.RemoveFulfillmentPlacesMetadata;

                    /**
                     * Encodes the specified RemoveFulfillmentPlacesMetadata message. Does not implicitly {@link google.cloud.retail.v2beta.RemoveFulfillmentPlacesMetadata.verify|verify} messages.
                     * @param message RemoveFulfillmentPlacesMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IRemoveFulfillmentPlacesMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RemoveFulfillmentPlacesMetadata message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.RemoveFulfillmentPlacesMetadata.verify|verify} messages.
                     * @param message RemoveFulfillmentPlacesMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IRemoveFulfillmentPlacesMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RemoveFulfillmentPlacesMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RemoveFulfillmentPlacesMetadata
                     * @throws {Error} If the payload is not 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.retail.v2beta.RemoveFulfillmentPlacesMetadata;

                    /**
                     * Decodes a RemoveFulfillmentPlacesMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RemoveFulfillmentPlacesMetadata
                     * @throws {Error} If the payload 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.retail.v2beta.RemoveFulfillmentPlacesMetadata;

                    /**
                     * Verifies a RemoveFulfillmentPlacesMetadata message.
                     * @param message Plain 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 RemoveFulfillmentPlacesMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RemoveFulfillmentPlacesMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.RemoveFulfillmentPlacesMetadata;

                    /**
                     * Creates a plain object from a RemoveFulfillmentPlacesMetadata message. Also converts values to other types if specified.
                     * @param message RemoveFulfillmentPlacesMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.RemoveFulfillmentPlacesMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RemoveFulfillmentPlacesMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RemoveFulfillmentPlacesMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RemoveFulfillmentPlacesResponse. */
                interface IRemoveFulfillmentPlacesResponse {
                }

                /** Represents a RemoveFulfillmentPlacesResponse. */
                class RemoveFulfillmentPlacesResponse implements IRemoveFulfillmentPlacesResponse {

                    /**
                     * Constructs a new RemoveFulfillmentPlacesResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IRemoveFulfillmentPlacesResponse);

                    /**
                     * Creates a new RemoveFulfillmentPlacesResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RemoveFulfillmentPlacesResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IRemoveFulfillmentPlacesResponse): google.cloud.retail.v2beta.RemoveFulfillmentPlacesResponse;

                    /**
                     * Encodes the specified RemoveFulfillmentPlacesResponse message. Does not implicitly {@link google.cloud.retail.v2beta.RemoveFulfillmentPlacesResponse.verify|verify} messages.
                     * @param message RemoveFulfillmentPlacesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IRemoveFulfillmentPlacesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RemoveFulfillmentPlacesResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.RemoveFulfillmentPlacesResponse.verify|verify} messages.
                     * @param message RemoveFulfillmentPlacesResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IRemoveFulfillmentPlacesResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RemoveFulfillmentPlacesResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RemoveFulfillmentPlacesResponse
                     * @throws {Error} If the payload is not 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.retail.v2beta.RemoveFulfillmentPlacesResponse;

                    /**
                     * Decodes a RemoveFulfillmentPlacesResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RemoveFulfillmentPlacesResponse
                     * @throws {Error} If the payload 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.retail.v2beta.RemoveFulfillmentPlacesResponse;

                    /**
                     * Verifies a RemoveFulfillmentPlacesResponse message.
                     * @param message Plain 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 RemoveFulfillmentPlacesResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RemoveFulfillmentPlacesResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.RemoveFulfillmentPlacesResponse;

                    /**
                     * Creates a plain object from a RemoveFulfillmentPlacesResponse message. Also converts values to other types if specified.
                     * @param message RemoveFulfillmentPlacesResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.RemoveFulfillmentPlacesResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RemoveFulfillmentPlacesResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RemoveFulfillmentPlacesResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PurgeMetadata. */
                interface IPurgeMetadata {
                }

                /** Represents a PurgeMetadata. */
                class PurgeMetadata implements IPurgeMetadata {

                    /**
                     * Constructs a new PurgeMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IPurgeMetadata);

                    /**
                     * Creates a new PurgeMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PurgeMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IPurgeMetadata): google.cloud.retail.v2beta.PurgeMetadata;

                    /**
                     * Encodes the specified PurgeMetadata message. Does not implicitly {@link google.cloud.retail.v2beta.PurgeMetadata.verify|verify} messages.
                     * @param message PurgeMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IPurgeMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PurgeMetadata message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.PurgeMetadata.verify|verify} messages.
                     * @param message PurgeMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IPurgeMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PurgeMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PurgeMetadata
                     * @throws {Error} If the payload is not 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.retail.v2beta.PurgeMetadata;

                    /**
                     * Decodes a PurgeMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PurgeMetadata
                     * @throws {Error} If the payload 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.retail.v2beta.PurgeMetadata;

                    /**
                     * Verifies a PurgeMetadata message.
                     * @param message Plain 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 PurgeMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PurgeMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.PurgeMetadata;

                    /**
                     * Creates a plain object from a PurgeMetadata message. Also converts values to other types if specified.
                     * @param message PurgeMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.PurgeMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PurgeMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PurgeMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PurgeProductsMetadata. */
                interface IPurgeProductsMetadata {

                    /** PurgeProductsMetadata createTime */
                    createTime?: (google.protobuf.ITimestamp|null);

                    /** PurgeProductsMetadata updateTime */
                    updateTime?: (google.protobuf.ITimestamp|null);

                    /** PurgeProductsMetadata successCount */
                    successCount?: (number|Long|string|null);

                    /** PurgeProductsMetadata failureCount */
                    failureCount?: (number|Long|string|null);
                }

                /** Represents a PurgeProductsMetadata. */
                class PurgeProductsMetadata implements IPurgeProductsMetadata {

                    /**
                     * Constructs a new PurgeProductsMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IPurgeProductsMetadata);

                    /** PurgeProductsMetadata createTime. */
                    public createTime?: (google.protobuf.ITimestamp|null);

                    /** PurgeProductsMetadata updateTime. */
                    public updateTime?: (google.protobuf.ITimestamp|null);

                    /** PurgeProductsMetadata successCount. */
                    public successCount: (number|Long|string);

                    /** PurgeProductsMetadata failureCount. */
                    public failureCount: (number|Long|string);

                    /**
                     * Creates a new PurgeProductsMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PurgeProductsMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IPurgeProductsMetadata): google.cloud.retail.v2beta.PurgeProductsMetadata;

                    /**
                     * Encodes the specified PurgeProductsMetadata message. Does not implicitly {@link google.cloud.retail.v2beta.PurgeProductsMetadata.verify|verify} messages.
                     * @param message PurgeProductsMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IPurgeProductsMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PurgeProductsMetadata message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.PurgeProductsMetadata.verify|verify} messages.
                     * @param message PurgeProductsMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IPurgeProductsMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PurgeProductsMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PurgeProductsMetadata
                     * @throws {Error} If the payload is not 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.retail.v2beta.PurgeProductsMetadata;

                    /**
                     * Decodes a PurgeProductsMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PurgeProductsMetadata
                     * @throws {Error} If the payload 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.retail.v2beta.PurgeProductsMetadata;

                    /**
                     * Verifies a PurgeProductsMetadata message.
                     * @param message Plain 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 PurgeProductsMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PurgeProductsMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.PurgeProductsMetadata;

                    /**
                     * Creates a plain object from a PurgeProductsMetadata message. Also converts values to other types if specified.
                     * @param message PurgeProductsMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.PurgeProductsMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PurgeProductsMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PurgeProductsMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PurgeProductsRequest. */
                interface IPurgeProductsRequest {

                    /** PurgeProductsRequest parent */
                    parent?: (string|null);

                    /** PurgeProductsRequest filter */
                    filter?: (string|null);

                    /** PurgeProductsRequest force */
                    force?: (boolean|null);
                }

                /** Represents a PurgeProductsRequest. */
                class PurgeProductsRequest implements IPurgeProductsRequest {

                    /**
                     * Constructs a new PurgeProductsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IPurgeProductsRequest);

                    /** PurgeProductsRequest parent. */
                    public parent: string;

                    /** PurgeProductsRequest filter. */
                    public filter: string;

                    /** PurgeProductsRequest force. */
                    public force: boolean;

                    /**
                     * Creates a new PurgeProductsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PurgeProductsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IPurgeProductsRequest): google.cloud.retail.v2beta.PurgeProductsRequest;

                    /**
                     * Encodes the specified PurgeProductsRequest message. Does not implicitly {@link google.cloud.retail.v2beta.PurgeProductsRequest.verify|verify} messages.
                     * @param message PurgeProductsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IPurgeProductsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PurgeProductsRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.PurgeProductsRequest.verify|verify} messages.
                     * @param message PurgeProductsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IPurgeProductsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PurgeProductsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PurgeProductsRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.PurgeProductsRequest;

                    /**
                     * Decodes a PurgeProductsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PurgeProductsRequest
                     * @throws {Error} If the payload 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.retail.v2beta.PurgeProductsRequest;

                    /**
                     * Verifies a PurgeProductsRequest message.
                     * @param message Plain 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 PurgeProductsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PurgeProductsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.PurgeProductsRequest;

                    /**
                     * Creates a plain object from a PurgeProductsRequest message. Also converts values to other types if specified.
                     * @param message PurgeProductsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.PurgeProductsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PurgeProductsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PurgeProductsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PurgeProductsResponse. */
                interface IPurgeProductsResponse {

                    /** PurgeProductsResponse purgeCount */
                    purgeCount?: (number|Long|string|null);

                    /** PurgeProductsResponse purgeSample */
                    purgeSample?: (string[]|null);
                }

                /** Represents a PurgeProductsResponse. */
                class PurgeProductsResponse implements IPurgeProductsResponse {

                    /**
                     * Constructs a new PurgeProductsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IPurgeProductsResponse);

                    /** PurgeProductsResponse purgeCount. */
                    public purgeCount: (number|Long|string);

                    /** PurgeProductsResponse purgeSample. */
                    public purgeSample: string[];

                    /**
                     * Creates a new PurgeProductsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PurgeProductsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IPurgeProductsResponse): google.cloud.retail.v2beta.PurgeProductsResponse;

                    /**
                     * Encodes the specified PurgeProductsResponse message. Does not implicitly {@link google.cloud.retail.v2beta.PurgeProductsResponse.verify|verify} messages.
                     * @param message PurgeProductsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IPurgeProductsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PurgeProductsResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.PurgeProductsResponse.verify|verify} messages.
                     * @param message PurgeProductsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IPurgeProductsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PurgeProductsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PurgeProductsResponse
                     * @throws {Error} If the payload is not 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.retail.v2beta.PurgeProductsResponse;

                    /**
                     * Decodes a PurgeProductsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PurgeProductsResponse
                     * @throws {Error} If the payload 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.retail.v2beta.PurgeProductsResponse;

                    /**
                     * Verifies a PurgeProductsResponse message.
                     * @param message Plain 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 PurgeProductsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PurgeProductsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.PurgeProductsResponse;

                    /**
                     * Creates a plain object from a PurgeProductsResponse message. Also converts values to other types if specified.
                     * @param message PurgeProductsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.PurgeProductsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PurgeProductsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PurgeProductsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PurgeUserEventsRequest. */
                interface IPurgeUserEventsRequest {

                    /** PurgeUserEventsRequest parent */
                    parent?: (string|null);

                    /** PurgeUserEventsRequest filter */
                    filter?: (string|null);

                    /** PurgeUserEventsRequest force */
                    force?: (boolean|null);
                }

                /** Represents a PurgeUserEventsRequest. */
                class PurgeUserEventsRequest implements IPurgeUserEventsRequest {

                    /**
                     * Constructs a new PurgeUserEventsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IPurgeUserEventsRequest);

                    /** PurgeUserEventsRequest parent. */
                    public parent: string;

                    /** PurgeUserEventsRequest filter. */
                    public filter: string;

                    /** PurgeUserEventsRequest force. */
                    public force: boolean;

                    /**
                     * Creates a new PurgeUserEventsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PurgeUserEventsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IPurgeUserEventsRequest): google.cloud.retail.v2beta.PurgeUserEventsRequest;

                    /**
                     * Encodes the specified PurgeUserEventsRequest message. Does not implicitly {@link google.cloud.retail.v2beta.PurgeUserEventsRequest.verify|verify} messages.
                     * @param message PurgeUserEventsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IPurgeUserEventsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PurgeUserEventsRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.PurgeUserEventsRequest.verify|verify} messages.
                     * @param message PurgeUserEventsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IPurgeUserEventsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PurgeUserEventsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PurgeUserEventsRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.PurgeUserEventsRequest;

                    /**
                     * Decodes a PurgeUserEventsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PurgeUserEventsRequest
                     * @throws {Error} If the payload 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.retail.v2beta.PurgeUserEventsRequest;

                    /**
                     * Verifies a PurgeUserEventsRequest message.
                     * @param message Plain 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 PurgeUserEventsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PurgeUserEventsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.PurgeUserEventsRequest;

                    /**
                     * Creates a plain object from a PurgeUserEventsRequest message. Also converts values to other types if specified.
                     * @param message PurgeUserEventsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.PurgeUserEventsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PurgeUserEventsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PurgeUserEventsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a PurgeUserEventsResponse. */
                interface IPurgeUserEventsResponse {

                    /** PurgeUserEventsResponse purgedEventsCount */
                    purgedEventsCount?: (number|Long|string|null);
                }

                /** Represents a PurgeUserEventsResponse. */
                class PurgeUserEventsResponse implements IPurgeUserEventsResponse {

                    /**
                     * Constructs a new PurgeUserEventsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IPurgeUserEventsResponse);

                    /** PurgeUserEventsResponse purgedEventsCount. */
                    public purgedEventsCount: (number|Long|string);

                    /**
                     * Creates a new PurgeUserEventsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PurgeUserEventsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IPurgeUserEventsResponse): google.cloud.retail.v2beta.PurgeUserEventsResponse;

                    /**
                     * Encodes the specified PurgeUserEventsResponse message. Does not implicitly {@link google.cloud.retail.v2beta.PurgeUserEventsResponse.verify|verify} messages.
                     * @param message PurgeUserEventsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IPurgeUserEventsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PurgeUserEventsResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.PurgeUserEventsResponse.verify|verify} messages.
                     * @param message PurgeUserEventsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IPurgeUserEventsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PurgeUserEventsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PurgeUserEventsResponse
                     * @throws {Error} If the payload is not 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.retail.v2beta.PurgeUserEventsResponse;

                    /**
                     * Decodes a PurgeUserEventsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PurgeUserEventsResponse
                     * @throws {Error} If the payload 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.retail.v2beta.PurgeUserEventsResponse;

                    /**
                     * Verifies a PurgeUserEventsResponse message.
                     * @param message Plain 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 PurgeUserEventsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PurgeUserEventsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.PurgeUserEventsResponse;

                    /**
                     * Creates a plain object from a PurgeUserEventsResponse message. Also converts values to other types if specified.
                     * @param message PurgeUserEventsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.PurgeUserEventsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PurgeUserEventsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PurgeUserEventsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an AlertConfig. */
                interface IAlertConfig {

                    /** AlertConfig name */
                    name?: (string|null);

                    /** AlertConfig alertPolicies */
                    alertPolicies?: (google.cloud.retail.v2beta.AlertConfig.IAlertPolicy[]|null);
                }

                /** Represents an AlertConfig. */
                class AlertConfig implements IAlertConfig {

                    /**
                     * Constructs a new AlertConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IAlertConfig);

                    /** AlertConfig name. */
                    public name: string;

                    /** AlertConfig alertPolicies. */
                    public alertPolicies: google.cloud.retail.v2beta.AlertConfig.IAlertPolicy[];

                    /**
                     * Creates a new AlertConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns AlertConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IAlertConfig): google.cloud.retail.v2beta.AlertConfig;

                    /**
                     * Encodes the specified AlertConfig message. Does not implicitly {@link google.cloud.retail.v2beta.AlertConfig.verify|verify} messages.
                     * @param message AlertConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IAlertConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified AlertConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.AlertConfig.verify|verify} messages.
                     * @param message AlertConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IAlertConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an AlertConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns AlertConfig
                     * @throws {Error} If the payload is not 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.retail.v2beta.AlertConfig;

                    /**
                     * Decodes an AlertConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns AlertConfig
                     * @throws {Error} If the payload 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.retail.v2beta.AlertConfig;

                    /**
                     * Verifies an AlertConfig message.
                     * @param message Plain 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 AlertConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns AlertConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.AlertConfig;

                    /**
                     * Creates a plain object from an AlertConfig message. Also converts values to other types if specified.
                     * @param message AlertConfig
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.AlertConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this AlertConfig to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for AlertConfig
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace AlertConfig {

                    /** Properties of an AlertPolicy. */
                    interface IAlertPolicy {

                        /** AlertPolicy alertGroup */
                        alertGroup?: (string|null);

                        /** AlertPolicy enrollStatus */
                        enrollStatus?: (google.cloud.retail.v2beta.AlertConfig.AlertPolicy.EnrollStatus|keyof typeof google.cloud.retail.v2beta.AlertConfig.AlertPolicy.EnrollStatus|null);

                        /** AlertPolicy recipients */
                        recipients?: (google.cloud.retail.v2beta.AlertConfig.AlertPolicy.IRecipient[]|null);
                    }

                    /** Represents an AlertPolicy. */
                    class AlertPolicy implements IAlertPolicy {

                        /**
                         * Constructs a new AlertPolicy.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: google.cloud.retail.v2beta.AlertConfig.IAlertPolicy);

                        /** AlertPolicy alertGroup. */
                        public alertGroup: string;

                        /** AlertPolicy enrollStatus. */
                        public enrollStatus: (google.cloud.retail.v2beta.AlertConfig.AlertPolicy.EnrollStatus|keyof typeof google.cloud.retail.v2beta.AlertConfig.AlertPolicy.EnrollStatus);

                        /** AlertPolicy recipients. */
                        public recipients: google.cloud.retail.v2beta.AlertConfig.AlertPolicy.IRecipient[];

                        /**
                         * Creates a new AlertPolicy instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns AlertPolicy instance
                         */
                        public static create(properties?: google.cloud.retail.v2beta.AlertConfig.IAlertPolicy): google.cloud.retail.v2beta.AlertConfig.AlertPolicy;

                        /**
                         * Encodes the specified AlertPolicy message. Does not implicitly {@link google.cloud.retail.v2beta.AlertConfig.AlertPolicy.verify|verify} messages.
                         * @param message AlertPolicy message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: google.cloud.retail.v2beta.AlertConfig.IAlertPolicy, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified AlertPolicy message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.AlertConfig.AlertPolicy.verify|verify} messages.
                         * @param message AlertPolicy message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: google.cloud.retail.v2beta.AlertConfig.IAlertPolicy, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes an AlertPolicy message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns AlertPolicy
                         * @throws {Error} If the payload is not 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.retail.v2beta.AlertConfig.AlertPolicy;

                        /**
                         * Decodes an AlertPolicy message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns AlertPolicy
                         * @throws {Error} If the payload 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.retail.v2beta.AlertConfig.AlertPolicy;

                        /**
                         * Verifies an AlertPolicy message.
                         * @param message Plain 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 AlertPolicy message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns AlertPolicy
                         */
                        public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.AlertConfig.AlertPolicy;

                        /**
                         * Creates a plain object from an AlertPolicy message. Also converts values to other types if specified.
                         * @param message AlertPolicy
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: google.cloud.retail.v2beta.AlertConfig.AlertPolicy, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this AlertPolicy to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for AlertPolicy
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    namespace AlertPolicy {

                        /** Properties of a Recipient. */
                        interface IRecipient {

                            /** Recipient emailAddress */
                            emailAddress?: (string|null);
                        }

                        /** Represents a Recipient. */
                        class Recipient implements IRecipient {

                            /**
                             * Constructs a new Recipient.
                             * @param [properties] Properties to set
                             */
                            constructor(properties?: google.cloud.retail.v2beta.AlertConfig.AlertPolicy.IRecipient);

                            /** Recipient emailAddress. */
                            public emailAddress: string;

                            /**
                             * Creates a new Recipient instance using the specified properties.
                             * @param [properties] Properties to set
                             * @returns Recipient instance
                             */
                            public static create(properties?: google.cloud.retail.v2beta.AlertConfig.AlertPolicy.IRecipient): google.cloud.retail.v2beta.AlertConfig.AlertPolicy.Recipient;

                            /**
                             * Encodes the specified Recipient message. Does not implicitly {@link google.cloud.retail.v2beta.AlertConfig.AlertPolicy.Recipient.verify|verify} messages.
                             * @param message Recipient message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encode(message: google.cloud.retail.v2beta.AlertConfig.AlertPolicy.IRecipient, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Encodes the specified Recipient message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.AlertConfig.AlertPolicy.Recipient.verify|verify} messages.
                             * @param message Recipient message or plain object to encode
                             * @param [writer] Writer to encode to
                             * @returns Writer
                             */
                            public static encodeDelimited(message: google.cloud.retail.v2beta.AlertConfig.AlertPolicy.IRecipient, writer?: $protobuf.Writer): $protobuf.Writer;

                            /**
                             * Decodes a Recipient message from the specified reader or buffer.
                             * @param reader Reader or buffer to decode from
                             * @param [length] Message length if known beforehand
                             * @returns Recipient
                             * @throws {Error} If the payload is not 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.retail.v2beta.AlertConfig.AlertPolicy.Recipient;

                            /**
                             * Decodes a Recipient message from the specified reader or buffer, length delimited.
                             * @param reader Reader or buffer to decode from
                             * @returns Recipient
                             * @throws {Error} If the payload 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.retail.v2beta.AlertConfig.AlertPolicy.Recipient;

                            /**
                             * Verifies a Recipient message.
                             * @param message Plain 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 Recipient message from a plain object. Also converts values to their respective internal types.
                             * @param object Plain object
                             * @returns Recipient
                             */
                            public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.AlertConfig.AlertPolicy.Recipient;

                            /**
                             * Creates a plain object from a Recipient message. Also converts values to other types if specified.
                             * @param message Recipient
                             * @param [options] Conversion options
                             * @returns Plain object
                             */
                            public static toObject(message: google.cloud.retail.v2beta.AlertConfig.AlertPolicy.Recipient, options?: $protobuf.IConversionOptions): { [k: string]: any };

                            /**
                             * Converts this Recipient to JSON.
                             * @returns JSON object
                             */
                            public toJSON(): { [k: string]: any };

                            /**
                             * Gets the default type url for Recipient
                             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                             * @returns The default type url
                             */
                            public static getTypeUrl(typeUrlPrefix?: string): string;
                        }

                        /** EnrollStatus enum. */
                        enum EnrollStatus {
                            ENROLL_STATUS_UNSPECIFIED = 0,
                            ENROLLED = 1,
                            DECLINED = 2
                        }
                    }
                }

                /** Represents a ProjectService */
                class ProjectService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new ProjectService 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 ProjectService 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): ProjectService;

                    /**
                     * Calls GetAlertConfig.
                     * @param request GetAlertConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and AlertConfig
                     */
                    public getAlertConfig(request: google.cloud.retail.v2beta.IGetAlertConfigRequest, callback: google.cloud.retail.v2beta.ProjectService.GetAlertConfigCallback): void;

                    /**
                     * Calls GetAlertConfig.
                     * @param request GetAlertConfigRequest message or plain object
                     * @returns Promise
                     */
                    public getAlertConfig(request: google.cloud.retail.v2beta.IGetAlertConfigRequest): Promise<google.cloud.retail.v2beta.AlertConfig>;

                    /**
                     * Calls UpdateAlertConfig.
                     * @param request UpdateAlertConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and AlertConfig
                     */
                    public updateAlertConfig(request: google.cloud.retail.v2beta.IUpdateAlertConfigRequest, callback: google.cloud.retail.v2beta.ProjectService.UpdateAlertConfigCallback): void;

                    /**
                     * Calls UpdateAlertConfig.
                     * @param request UpdateAlertConfigRequest message or plain object
                     * @returns Promise
                     */
                    public updateAlertConfig(request: google.cloud.retail.v2beta.IUpdateAlertConfigRequest): Promise<google.cloud.retail.v2beta.AlertConfig>;
                }

                namespace ProjectService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.ProjectService|getAlertConfig}.
                     * @param error Error, if any
                     * @param [response] AlertConfig
                     */
                    type GetAlertConfigCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.AlertConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.ProjectService|updateAlertConfig}.
                     * @param error Error, if any
                     * @param [response] AlertConfig
                     */
                    type UpdateAlertConfigCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.AlertConfig) => void;
                }

                /** Properties of a GetAlertConfigRequest. */
                interface IGetAlertConfigRequest {

                    /** GetAlertConfigRequest name */
                    name?: (string|null);
                }

                /** Represents a GetAlertConfigRequest. */
                class GetAlertConfigRequest implements IGetAlertConfigRequest {

                    /**
                     * Constructs a new GetAlertConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IGetAlertConfigRequest);

                    /** GetAlertConfigRequest name. */
                    public name: string;

                    /**
                     * Creates a new GetAlertConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetAlertConfigRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IGetAlertConfigRequest): google.cloud.retail.v2beta.GetAlertConfigRequest;

                    /**
                     * Encodes the specified GetAlertConfigRequest message. Does not implicitly {@link google.cloud.retail.v2beta.GetAlertConfigRequest.verify|verify} messages.
                     * @param message GetAlertConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IGetAlertConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetAlertConfigRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.GetAlertConfigRequest.verify|verify} messages.
                     * @param message GetAlertConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IGetAlertConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetAlertConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetAlertConfigRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.GetAlertConfigRequest;

                    /**
                     * Decodes a GetAlertConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetAlertConfigRequest
                     * @throws {Error} If the payload 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.retail.v2beta.GetAlertConfigRequest;

                    /**
                     * Verifies a GetAlertConfigRequest message.
                     * @param message Plain 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 GetAlertConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetAlertConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.GetAlertConfigRequest;

                    /**
                     * Creates a plain object from a GetAlertConfigRequest message. Also converts values to other types if specified.
                     * @param message GetAlertConfigRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.GetAlertConfigRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetAlertConfigRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetAlertConfigRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateAlertConfigRequest. */
                interface IUpdateAlertConfigRequest {

                    /** UpdateAlertConfigRequest alertConfig */
                    alertConfig?: (google.cloud.retail.v2beta.IAlertConfig|null);

                    /** UpdateAlertConfigRequest updateMask */
                    updateMask?: (google.protobuf.IFieldMask|null);
                }

                /** Represents an UpdateAlertConfigRequest. */
                class UpdateAlertConfigRequest implements IUpdateAlertConfigRequest {

                    /**
                     * Constructs a new UpdateAlertConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IUpdateAlertConfigRequest);

                    /** UpdateAlertConfigRequest alertConfig. */
                    public alertConfig?: (google.cloud.retail.v2beta.IAlertConfig|null);

                    /** UpdateAlertConfigRequest updateMask. */
                    public updateMask?: (google.protobuf.IFieldMask|null);

                    /**
                     * Creates a new UpdateAlertConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateAlertConfigRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IUpdateAlertConfigRequest): google.cloud.retail.v2beta.UpdateAlertConfigRequest;

                    /**
                     * Encodes the specified UpdateAlertConfigRequest message. Does not implicitly {@link google.cloud.retail.v2beta.UpdateAlertConfigRequest.verify|verify} messages.
                     * @param message UpdateAlertConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IUpdateAlertConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateAlertConfigRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.UpdateAlertConfigRequest.verify|verify} messages.
                     * @param message UpdateAlertConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IUpdateAlertConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateAlertConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateAlertConfigRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.UpdateAlertConfigRequest;

                    /**
                     * Decodes an UpdateAlertConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateAlertConfigRequest
                     * @throws {Error} If the payload 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.retail.v2beta.UpdateAlertConfigRequest;

                    /**
                     * Verifies an UpdateAlertConfigRequest message.
                     * @param message Plain 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 UpdateAlertConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateAlertConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.UpdateAlertConfigRequest;

                    /**
                     * Creates a plain object from an UpdateAlertConfigRequest message. Also converts values to other types if specified.
                     * @param message UpdateAlertConfigRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.UpdateAlertConfigRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateAlertConfigRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateAlertConfigRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ServingConfig. */
                interface IServingConfig {

                    /** ServingConfig name */
                    name?: (string|null);

                    /** ServingConfig displayName */
                    displayName?: (string|null);

                    /** ServingConfig modelId */
                    modelId?: (string|null);

                    /** ServingConfig priceRerankingLevel */
                    priceRerankingLevel?: (string|null);

                    /** ServingConfig facetControlIds */
                    facetControlIds?: (string[]|null);

                    /** ServingConfig dynamicFacetSpec */
                    dynamicFacetSpec?: (google.cloud.retail.v2beta.SearchRequest.IDynamicFacetSpec|null);

                    /** ServingConfig boostControlIds */
                    boostControlIds?: (string[]|null);

                    /** ServingConfig filterControlIds */
                    filterControlIds?: (string[]|null);

                    /** ServingConfig redirectControlIds */
                    redirectControlIds?: (string[]|null);

                    /** ServingConfig twowaySynonymsControlIds */
                    twowaySynonymsControlIds?: (string[]|null);

                    /** ServingConfig onewaySynonymsControlIds */
                    onewaySynonymsControlIds?: (string[]|null);

                    /** ServingConfig doNotAssociateControlIds */
                    doNotAssociateControlIds?: (string[]|null);

                    /** ServingConfig replacementControlIds */
                    replacementControlIds?: (string[]|null);

                    /** ServingConfig ignoreControlIds */
                    ignoreControlIds?: (string[]|null);

                    /** ServingConfig diversityLevel */
                    diversityLevel?: (string|null);

                    /** ServingConfig diversityType */
                    diversityType?: (google.cloud.retail.v2beta.ServingConfig.DiversityType|keyof typeof google.cloud.retail.v2beta.ServingConfig.DiversityType|null);

                    /** ServingConfig enableCategoryFilterLevel */
                    enableCategoryFilterLevel?: (string|null);

                    /** ServingConfig ignoreRecsDenylist */
                    ignoreRecsDenylist?: (boolean|null);

                    /** ServingConfig personalizationSpec */
                    personalizationSpec?: (google.cloud.retail.v2beta.SearchRequest.IPersonalizationSpec|null);

                    /** ServingConfig solutionTypes */
                    solutionTypes?: (google.cloud.retail.v2beta.SolutionType[]|null);
                }

                /** Represents a ServingConfig. */
                class ServingConfig implements IServingConfig {

                    /**
                     * Constructs a new ServingConfig.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IServingConfig);

                    /** ServingConfig name. */
                    public name: string;

                    /** ServingConfig displayName. */
                    public displayName: string;

                    /** ServingConfig modelId. */
                    public modelId: string;

                    /** ServingConfig priceRerankingLevel. */
                    public priceRerankingLevel: string;

                    /** ServingConfig facetControlIds. */
                    public facetControlIds: string[];

                    /** ServingConfig dynamicFacetSpec. */
                    public dynamicFacetSpec?: (google.cloud.retail.v2beta.SearchRequest.IDynamicFacetSpec|null);

                    /** ServingConfig boostControlIds. */
                    public boostControlIds: string[];

                    /** ServingConfig filterControlIds. */
                    public filterControlIds: string[];

                    /** ServingConfig redirectControlIds. */
                    public redirectControlIds: string[];

                    /** ServingConfig twowaySynonymsControlIds. */
                    public twowaySynonymsControlIds: string[];

                    /** ServingConfig onewaySynonymsControlIds. */
                    public onewaySynonymsControlIds: string[];

                    /** ServingConfig doNotAssociateControlIds. */
                    public doNotAssociateControlIds: string[];

                    /** ServingConfig replacementControlIds. */
                    public replacementControlIds: string[];

                    /** ServingConfig ignoreControlIds. */
                    public ignoreControlIds: string[];

                    /** ServingConfig diversityLevel. */
                    public diversityLevel: string;

                    /** ServingConfig diversityType. */
                    public diversityType: (google.cloud.retail.v2beta.ServingConfig.DiversityType|keyof typeof google.cloud.retail.v2beta.ServingConfig.DiversityType);

                    /** ServingConfig enableCategoryFilterLevel. */
                    public enableCategoryFilterLevel: string;

                    /** ServingConfig ignoreRecsDenylist. */
                    public ignoreRecsDenylist: boolean;

                    /** ServingConfig personalizationSpec. */
                    public personalizationSpec?: (google.cloud.retail.v2beta.SearchRequest.IPersonalizationSpec|null);

                    /** ServingConfig solutionTypes. */
                    public solutionTypes: google.cloud.retail.v2beta.SolutionType[];

                    /**
                     * Creates a new ServingConfig instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ServingConfig instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IServingConfig): google.cloud.retail.v2beta.ServingConfig;

                    /**
                     * Encodes the specified ServingConfig message. Does not implicitly {@link google.cloud.retail.v2beta.ServingConfig.verify|verify} messages.
                     * @param message ServingConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IServingConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ServingConfig message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ServingConfig.verify|verify} messages.
                     * @param message ServingConfig message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IServingConfig, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ServingConfig message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ServingConfig
                     * @throws {Error} If the payload is not 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.retail.v2beta.ServingConfig;

                    /**
                     * Decodes a ServingConfig message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ServingConfig
                     * @throws {Error} If the payload 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.retail.v2beta.ServingConfig;

                    /**
                     * Verifies a ServingConfig message.
                     * @param message Plain 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 ServingConfig message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ServingConfig
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ServingConfig;

                    /**
                     * Creates a plain object from a ServingConfig message. Also converts values to other types if specified.
                     * @param message ServingConfig
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ServingConfig, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ServingConfig to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ServingConfig
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace ServingConfig {

                    /** DiversityType enum. */
                    enum DiversityType {
                        DIVERSITY_TYPE_UNSPECIFIED = 0,
                        RULE_BASED_DIVERSITY = 2,
                        DATA_DRIVEN_DIVERSITY = 3
                    }
                }

                /** Represents a ServingConfigService */
                class ServingConfigService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new ServingConfigService 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 ServingConfigService 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): ServingConfigService;

                    /**
                     * Calls CreateServingConfig.
                     * @param request CreateServingConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ServingConfig
                     */
                    public createServingConfig(request: google.cloud.retail.v2beta.ICreateServingConfigRequest, callback: google.cloud.retail.v2beta.ServingConfigService.CreateServingConfigCallback): void;

                    /**
                     * Calls CreateServingConfig.
                     * @param request CreateServingConfigRequest message or plain object
                     * @returns Promise
                     */
                    public createServingConfig(request: google.cloud.retail.v2beta.ICreateServingConfigRequest): Promise<google.cloud.retail.v2beta.ServingConfig>;

                    /**
                     * Calls DeleteServingConfig.
                     * @param request DeleteServingConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Empty
                     */
                    public deleteServingConfig(request: google.cloud.retail.v2beta.IDeleteServingConfigRequest, callback: google.cloud.retail.v2beta.ServingConfigService.DeleteServingConfigCallback): void;

                    /**
                     * Calls DeleteServingConfig.
                     * @param request DeleteServingConfigRequest message or plain object
                     * @returns Promise
                     */
                    public deleteServingConfig(request: google.cloud.retail.v2beta.IDeleteServingConfigRequest): Promise<google.protobuf.Empty>;

                    /**
                     * Calls UpdateServingConfig.
                     * @param request UpdateServingConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ServingConfig
                     */
                    public updateServingConfig(request: google.cloud.retail.v2beta.IUpdateServingConfigRequest, callback: google.cloud.retail.v2beta.ServingConfigService.UpdateServingConfigCallback): void;

                    /**
                     * Calls UpdateServingConfig.
                     * @param request UpdateServingConfigRequest message or plain object
                     * @returns Promise
                     */
                    public updateServingConfig(request: google.cloud.retail.v2beta.IUpdateServingConfigRequest): Promise<google.cloud.retail.v2beta.ServingConfig>;

                    /**
                     * Calls GetServingConfig.
                     * @param request GetServingConfigRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ServingConfig
                     */
                    public getServingConfig(request: google.cloud.retail.v2beta.IGetServingConfigRequest, callback: google.cloud.retail.v2beta.ServingConfigService.GetServingConfigCallback): void;

                    /**
                     * Calls GetServingConfig.
                     * @param request GetServingConfigRequest message or plain object
                     * @returns Promise
                     */
                    public getServingConfig(request: google.cloud.retail.v2beta.IGetServingConfigRequest): Promise<google.cloud.retail.v2beta.ServingConfig>;

                    /**
                     * Calls ListServingConfigs.
                     * @param request ListServingConfigsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ListServingConfigsResponse
                     */
                    public listServingConfigs(request: google.cloud.retail.v2beta.IListServingConfigsRequest, callback: google.cloud.retail.v2beta.ServingConfigService.ListServingConfigsCallback): void;

                    /**
                     * Calls ListServingConfigs.
                     * @param request ListServingConfigsRequest message or plain object
                     * @returns Promise
                     */
                    public listServingConfigs(request: google.cloud.retail.v2beta.IListServingConfigsRequest): Promise<google.cloud.retail.v2beta.ListServingConfigsResponse>;

                    /**
                     * Calls AddControl.
                     * @param request AddControlRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ServingConfig
                     */
                    public addControl(request: google.cloud.retail.v2beta.IAddControlRequest, callback: google.cloud.retail.v2beta.ServingConfigService.AddControlCallback): void;

                    /**
                     * Calls AddControl.
                     * @param request AddControlRequest message or plain object
                     * @returns Promise
                     */
                    public addControl(request: google.cloud.retail.v2beta.IAddControlRequest): Promise<google.cloud.retail.v2beta.ServingConfig>;

                    /**
                     * Calls RemoveControl.
                     * @param request RemoveControlRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and ServingConfig
                     */
                    public removeControl(request: google.cloud.retail.v2beta.IRemoveControlRequest, callback: google.cloud.retail.v2beta.ServingConfigService.RemoveControlCallback): void;

                    /**
                     * Calls RemoveControl.
                     * @param request RemoveControlRequest message or plain object
                     * @returns Promise
                     */
                    public removeControl(request: google.cloud.retail.v2beta.IRemoveControlRequest): Promise<google.cloud.retail.v2beta.ServingConfig>;
                }

                namespace ServingConfigService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.ServingConfigService|createServingConfig}.
                     * @param error Error, if any
                     * @param [response] ServingConfig
                     */
                    type CreateServingConfigCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.ServingConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.ServingConfigService|deleteServingConfig}.
                     * @param error Error, if any
                     * @param [response] Empty
                     */
                    type DeleteServingConfigCallback = (error: (Error|null), response?: google.protobuf.Empty) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.ServingConfigService|updateServingConfig}.
                     * @param error Error, if any
                     * @param [response] ServingConfig
                     */
                    type UpdateServingConfigCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.ServingConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.ServingConfigService|getServingConfig}.
                     * @param error Error, if any
                     * @param [response] ServingConfig
                     */
                    type GetServingConfigCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.ServingConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.ServingConfigService|listServingConfigs}.
                     * @param error Error, if any
                     * @param [response] ListServingConfigsResponse
                     */
                    type ListServingConfigsCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.ListServingConfigsResponse) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.ServingConfigService|addControl}.
                     * @param error Error, if any
                     * @param [response] ServingConfig
                     */
                    type AddControlCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.ServingConfig) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.ServingConfigService|removeControl}.
                     * @param error Error, if any
                     * @param [response] ServingConfig
                     */
                    type RemoveControlCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.ServingConfig) => void;
                }

                /** Properties of a CreateServingConfigRequest. */
                interface ICreateServingConfigRequest {

                    /** CreateServingConfigRequest parent */
                    parent?: (string|null);

                    /** CreateServingConfigRequest servingConfig */
                    servingConfig?: (google.cloud.retail.v2beta.IServingConfig|null);

                    /** CreateServingConfigRequest servingConfigId */
                    servingConfigId?: (string|null);
                }

                /** Represents a CreateServingConfigRequest. */
                class CreateServingConfigRequest implements ICreateServingConfigRequest {

                    /**
                     * Constructs a new CreateServingConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.ICreateServingConfigRequest);

                    /** CreateServingConfigRequest parent. */
                    public parent: string;

                    /** CreateServingConfigRequest servingConfig. */
                    public servingConfig?: (google.cloud.retail.v2beta.IServingConfig|null);

                    /** CreateServingConfigRequest servingConfigId. */
                    public servingConfigId: string;

                    /**
                     * Creates a new CreateServingConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CreateServingConfigRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.ICreateServingConfigRequest): google.cloud.retail.v2beta.CreateServingConfigRequest;

                    /**
                     * Encodes the specified CreateServingConfigRequest message. Does not implicitly {@link google.cloud.retail.v2beta.CreateServingConfigRequest.verify|verify} messages.
                     * @param message CreateServingConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.ICreateServingConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CreateServingConfigRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.CreateServingConfigRequest.verify|verify} messages.
                     * @param message CreateServingConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.ICreateServingConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CreateServingConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CreateServingConfigRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.CreateServingConfigRequest;

                    /**
                     * Decodes a CreateServingConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CreateServingConfigRequest
                     * @throws {Error} If the payload 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.retail.v2beta.CreateServingConfigRequest;

                    /**
                     * Verifies a CreateServingConfigRequest message.
                     * @param message Plain 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 CreateServingConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CreateServingConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.CreateServingConfigRequest;

                    /**
                     * Creates a plain object from a CreateServingConfigRequest message. Also converts values to other types if specified.
                     * @param message CreateServingConfigRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.CreateServingConfigRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CreateServingConfigRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CreateServingConfigRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an UpdateServingConfigRequest. */
                interface IUpdateServingConfigRequest {

                    /** UpdateServingConfigRequest servingConfig */
                    servingConfig?: (google.cloud.retail.v2beta.IServingConfig|null);

                    /** UpdateServingConfigRequest updateMask */
                    updateMask?: (google.protobuf.IFieldMask|null);
                }

                /** Represents an UpdateServingConfigRequest. */
                class UpdateServingConfigRequest implements IUpdateServingConfigRequest {

                    /**
                     * Constructs a new UpdateServingConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IUpdateServingConfigRequest);

                    /** UpdateServingConfigRequest servingConfig. */
                    public servingConfig?: (google.cloud.retail.v2beta.IServingConfig|null);

                    /** UpdateServingConfigRequest updateMask. */
                    public updateMask?: (google.protobuf.IFieldMask|null);

                    /**
                     * Creates a new UpdateServingConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns UpdateServingConfigRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IUpdateServingConfigRequest): google.cloud.retail.v2beta.UpdateServingConfigRequest;

                    /**
                     * Encodes the specified UpdateServingConfigRequest message. Does not implicitly {@link google.cloud.retail.v2beta.UpdateServingConfigRequest.verify|verify} messages.
                     * @param message UpdateServingConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IUpdateServingConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified UpdateServingConfigRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.UpdateServingConfigRequest.verify|verify} messages.
                     * @param message UpdateServingConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IUpdateServingConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an UpdateServingConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns UpdateServingConfigRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.UpdateServingConfigRequest;

                    /**
                     * Decodes an UpdateServingConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns UpdateServingConfigRequest
                     * @throws {Error} If the payload 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.retail.v2beta.UpdateServingConfigRequest;

                    /**
                     * Verifies an UpdateServingConfigRequest message.
                     * @param message Plain 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 UpdateServingConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns UpdateServingConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.UpdateServingConfigRequest;

                    /**
                     * Creates a plain object from an UpdateServingConfigRequest message. Also converts values to other types if specified.
                     * @param message UpdateServingConfigRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.UpdateServingConfigRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this UpdateServingConfigRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for UpdateServingConfigRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a DeleteServingConfigRequest. */
                interface IDeleteServingConfigRequest {

                    /** DeleteServingConfigRequest name */
                    name?: (string|null);
                }

                /** Represents a DeleteServingConfigRequest. */
                class DeleteServingConfigRequest implements IDeleteServingConfigRequest {

                    /**
                     * Constructs a new DeleteServingConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IDeleteServingConfigRequest);

                    /** DeleteServingConfigRequest name. */
                    public name: string;

                    /**
                     * Creates a new DeleteServingConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns DeleteServingConfigRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IDeleteServingConfigRequest): google.cloud.retail.v2beta.DeleteServingConfigRequest;

                    /**
                     * Encodes the specified DeleteServingConfigRequest message. Does not implicitly {@link google.cloud.retail.v2beta.DeleteServingConfigRequest.verify|verify} messages.
                     * @param message DeleteServingConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IDeleteServingConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified DeleteServingConfigRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.DeleteServingConfigRequest.verify|verify} messages.
                     * @param message DeleteServingConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IDeleteServingConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a DeleteServingConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns DeleteServingConfigRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.DeleteServingConfigRequest;

                    /**
                     * Decodes a DeleteServingConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns DeleteServingConfigRequest
                     * @throws {Error} If the payload 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.retail.v2beta.DeleteServingConfigRequest;

                    /**
                     * Verifies a DeleteServingConfigRequest message.
                     * @param message Plain 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 DeleteServingConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns DeleteServingConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.DeleteServingConfigRequest;

                    /**
                     * Creates a plain object from a DeleteServingConfigRequest message. Also converts values to other types if specified.
                     * @param message DeleteServingConfigRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.DeleteServingConfigRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this DeleteServingConfigRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for DeleteServingConfigRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a GetServingConfigRequest. */
                interface IGetServingConfigRequest {

                    /** GetServingConfigRequest name */
                    name?: (string|null);
                }

                /** Represents a GetServingConfigRequest. */
                class GetServingConfigRequest implements IGetServingConfigRequest {

                    /**
                     * Constructs a new GetServingConfigRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IGetServingConfigRequest);

                    /** GetServingConfigRequest name. */
                    public name: string;

                    /**
                     * Creates a new GetServingConfigRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns GetServingConfigRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IGetServingConfigRequest): google.cloud.retail.v2beta.GetServingConfigRequest;

                    /**
                     * Encodes the specified GetServingConfigRequest message. Does not implicitly {@link google.cloud.retail.v2beta.GetServingConfigRequest.verify|verify} messages.
                     * @param message GetServingConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IGetServingConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified GetServingConfigRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.GetServingConfigRequest.verify|verify} messages.
                     * @param message GetServingConfigRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IGetServingConfigRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a GetServingConfigRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns GetServingConfigRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.GetServingConfigRequest;

                    /**
                     * Decodes a GetServingConfigRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns GetServingConfigRequest
                     * @throws {Error} If the payload 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.retail.v2beta.GetServingConfigRequest;

                    /**
                     * Verifies a GetServingConfigRequest message.
                     * @param message Plain 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 GetServingConfigRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns GetServingConfigRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.GetServingConfigRequest;

                    /**
                     * Creates a plain object from a GetServingConfigRequest message. Also converts values to other types if specified.
                     * @param message GetServingConfigRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.GetServingConfigRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this GetServingConfigRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for GetServingConfigRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListServingConfigsRequest. */
                interface IListServingConfigsRequest {

                    /** ListServingConfigsRequest parent */
                    parent?: (string|null);

                    /** ListServingConfigsRequest pageSize */
                    pageSize?: (number|null);

                    /** ListServingConfigsRequest pageToken */
                    pageToken?: (string|null);
                }

                /** Represents a ListServingConfigsRequest. */
                class ListServingConfigsRequest implements IListServingConfigsRequest {

                    /**
                     * Constructs a new ListServingConfigsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IListServingConfigsRequest);

                    /** ListServingConfigsRequest parent. */
                    public parent: string;

                    /** ListServingConfigsRequest pageSize. */
                    public pageSize: number;

                    /** ListServingConfigsRequest pageToken. */
                    public pageToken: string;

                    /**
                     * Creates a new ListServingConfigsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListServingConfigsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IListServingConfigsRequest): google.cloud.retail.v2beta.ListServingConfigsRequest;

                    /**
                     * Encodes the specified ListServingConfigsRequest message. Does not implicitly {@link google.cloud.retail.v2beta.ListServingConfigsRequest.verify|verify} messages.
                     * @param message ListServingConfigsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IListServingConfigsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListServingConfigsRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ListServingConfigsRequest.verify|verify} messages.
                     * @param message ListServingConfigsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IListServingConfigsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListServingConfigsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListServingConfigsRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.ListServingConfigsRequest;

                    /**
                     * Decodes a ListServingConfigsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListServingConfigsRequest
                     * @throws {Error} If the payload 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.retail.v2beta.ListServingConfigsRequest;

                    /**
                     * Verifies a ListServingConfigsRequest message.
                     * @param message Plain 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 ListServingConfigsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListServingConfigsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ListServingConfigsRequest;

                    /**
                     * Creates a plain object from a ListServingConfigsRequest message. Also converts values to other types if specified.
                     * @param message ListServingConfigsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ListServingConfigsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListServingConfigsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListServingConfigsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a ListServingConfigsResponse. */
                interface IListServingConfigsResponse {

                    /** ListServingConfigsResponse servingConfigs */
                    servingConfigs?: (google.cloud.retail.v2beta.IServingConfig[]|null);

                    /** ListServingConfigsResponse nextPageToken */
                    nextPageToken?: (string|null);
                }

                /** Represents a ListServingConfigsResponse. */
                class ListServingConfigsResponse implements IListServingConfigsResponse {

                    /**
                     * Constructs a new ListServingConfigsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IListServingConfigsResponse);

                    /** ListServingConfigsResponse servingConfigs. */
                    public servingConfigs: google.cloud.retail.v2beta.IServingConfig[];

                    /** ListServingConfigsResponse nextPageToken. */
                    public nextPageToken: string;

                    /**
                     * Creates a new ListServingConfigsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns ListServingConfigsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IListServingConfigsResponse): google.cloud.retail.v2beta.ListServingConfigsResponse;

                    /**
                     * Encodes the specified ListServingConfigsResponse message. Does not implicitly {@link google.cloud.retail.v2beta.ListServingConfigsResponse.verify|verify} messages.
                     * @param message ListServingConfigsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IListServingConfigsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified ListServingConfigsResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.ListServingConfigsResponse.verify|verify} messages.
                     * @param message ListServingConfigsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IListServingConfigsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a ListServingConfigsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns ListServingConfigsResponse
                     * @throws {Error} If the payload is not 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.retail.v2beta.ListServingConfigsResponse;

                    /**
                     * Decodes a ListServingConfigsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns ListServingConfigsResponse
                     * @throws {Error} If the payload 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.retail.v2beta.ListServingConfigsResponse;

                    /**
                     * Verifies a ListServingConfigsResponse message.
                     * @param message Plain 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 ListServingConfigsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns ListServingConfigsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.ListServingConfigsResponse;

                    /**
                     * Creates a plain object from a ListServingConfigsResponse message. Also converts values to other types if specified.
                     * @param message ListServingConfigsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.ListServingConfigsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this ListServingConfigsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for ListServingConfigsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of an AddControlRequest. */
                interface IAddControlRequest {

                    /** AddControlRequest servingConfig */
                    servingConfig?: (string|null);

                    /** AddControlRequest controlId */
                    controlId?: (string|null);
                }

                /** Represents an AddControlRequest. */
                class AddControlRequest implements IAddControlRequest {

                    /**
                     * Constructs a new AddControlRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IAddControlRequest);

                    /** AddControlRequest servingConfig. */
                    public servingConfig: string;

                    /** AddControlRequest controlId. */
                    public controlId: string;

                    /**
                     * Creates a new AddControlRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns AddControlRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IAddControlRequest): google.cloud.retail.v2beta.AddControlRequest;

                    /**
                     * Encodes the specified AddControlRequest message. Does not implicitly {@link google.cloud.retail.v2beta.AddControlRequest.verify|verify} messages.
                     * @param message AddControlRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IAddControlRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified AddControlRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.AddControlRequest.verify|verify} messages.
                     * @param message AddControlRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IAddControlRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes an AddControlRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns AddControlRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.AddControlRequest;

                    /**
                     * Decodes an AddControlRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns AddControlRequest
                     * @throws {Error} If the payload 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.retail.v2beta.AddControlRequest;

                    /**
                     * Verifies an AddControlRequest message.
                     * @param message Plain 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 AddControlRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns AddControlRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.AddControlRequest;

                    /**
                     * Creates a plain object from an AddControlRequest message. Also converts values to other types if specified.
                     * @param message AddControlRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.AddControlRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this AddControlRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for AddControlRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RemoveControlRequest. */
                interface IRemoveControlRequest {

                    /** RemoveControlRequest servingConfig */
                    servingConfig?: (string|null);

                    /** RemoveControlRequest controlId */
                    controlId?: (string|null);
                }

                /** Represents a RemoveControlRequest. */
                class RemoveControlRequest implements IRemoveControlRequest {

                    /**
                     * Constructs a new RemoveControlRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IRemoveControlRequest);

                    /** RemoveControlRequest servingConfig. */
                    public servingConfig: string;

                    /** RemoveControlRequest controlId. */
                    public controlId: string;

                    /**
                     * Creates a new RemoveControlRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RemoveControlRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IRemoveControlRequest): google.cloud.retail.v2beta.RemoveControlRequest;

                    /**
                     * Encodes the specified RemoveControlRequest message. Does not implicitly {@link google.cloud.retail.v2beta.RemoveControlRequest.verify|verify} messages.
                     * @param message RemoveControlRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IRemoveControlRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RemoveControlRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.RemoveControlRequest.verify|verify} messages.
                     * @param message RemoveControlRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IRemoveControlRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RemoveControlRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RemoveControlRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.RemoveControlRequest;

                    /**
                     * Decodes a RemoveControlRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RemoveControlRequest
                     * @throws {Error} If the payload 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.retail.v2beta.RemoveControlRequest;

                    /**
                     * Verifies a RemoveControlRequest message.
                     * @param message Plain 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 RemoveControlRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RemoveControlRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.RemoveControlRequest;

                    /**
                     * Creates a plain object from a RemoveControlRequest message. Also converts values to other types if specified.
                     * @param message RemoveControlRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.RemoveControlRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RemoveControlRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RemoveControlRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Represents a UserEventService */
                class UserEventService extends $protobuf.rpc.Service {

                    /**
                     * Constructs a new UserEventService 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 UserEventService 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): UserEventService;

                    /**
                     * Calls WriteUserEvent.
                     * @param request WriteUserEventRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and UserEvent
                     */
                    public writeUserEvent(request: google.cloud.retail.v2beta.IWriteUserEventRequest, callback: google.cloud.retail.v2beta.UserEventService.WriteUserEventCallback): void;

                    /**
                     * Calls WriteUserEvent.
                     * @param request WriteUserEventRequest message or plain object
                     * @returns Promise
                     */
                    public writeUserEvent(request: google.cloud.retail.v2beta.IWriteUserEventRequest): Promise<google.cloud.retail.v2beta.UserEvent>;

                    /**
                     * Calls CollectUserEvent.
                     * @param request CollectUserEventRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and HttpBody
                     */
                    public collectUserEvent(request: google.cloud.retail.v2beta.ICollectUserEventRequest, callback: google.cloud.retail.v2beta.UserEventService.CollectUserEventCallback): void;

                    /**
                     * Calls CollectUserEvent.
                     * @param request CollectUserEventRequest message or plain object
                     * @returns Promise
                     */
                    public collectUserEvent(request: google.cloud.retail.v2beta.ICollectUserEventRequest): Promise<google.api.HttpBody>;

                    /**
                     * Calls PurgeUserEvents.
                     * @param request PurgeUserEventsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public purgeUserEvents(request: google.cloud.retail.v2beta.IPurgeUserEventsRequest, callback: google.cloud.retail.v2beta.UserEventService.PurgeUserEventsCallback): void;

                    /**
                     * Calls PurgeUserEvents.
                     * @param request PurgeUserEventsRequest message or plain object
                     * @returns Promise
                     */
                    public purgeUserEvents(request: google.cloud.retail.v2beta.IPurgeUserEventsRequest): Promise<google.longrunning.Operation>;

                    /**
                     * Calls ImportUserEvents.
                     * @param request ImportUserEventsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public importUserEvents(request: google.cloud.retail.v2beta.IImportUserEventsRequest, callback: google.cloud.retail.v2beta.UserEventService.ImportUserEventsCallback): void;

                    /**
                     * Calls ImportUserEvents.
                     * @param request ImportUserEventsRequest message or plain object
                     * @returns Promise
                     */
                    public importUserEvents(request: google.cloud.retail.v2beta.IImportUserEventsRequest): Promise<google.longrunning.Operation>;

                    /**
                     * Calls ExportUserEvents.
                     * @param request ExportUserEventsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public exportUserEvents(request: google.cloud.retail.v2beta.IExportUserEventsRequest, callback: google.cloud.retail.v2beta.UserEventService.ExportUserEventsCallback): void;

                    /**
                     * Calls ExportUserEvents.
                     * @param request ExportUserEventsRequest message or plain object
                     * @returns Promise
                     */
                    public exportUserEvents(request: google.cloud.retail.v2beta.IExportUserEventsRequest): Promise<google.longrunning.Operation>;

                    /**
                     * Calls RejoinUserEvents.
                     * @param request RejoinUserEventsRequest message or plain object
                     * @param callback Node-style callback called with the error, if any, and Operation
                     */
                    public rejoinUserEvents(request: google.cloud.retail.v2beta.IRejoinUserEventsRequest, callback: google.cloud.retail.v2beta.UserEventService.RejoinUserEventsCallback): void;

                    /**
                     * Calls RejoinUserEvents.
                     * @param request RejoinUserEventsRequest message or plain object
                     * @returns Promise
                     */
                    public rejoinUserEvents(request: google.cloud.retail.v2beta.IRejoinUserEventsRequest): Promise<google.longrunning.Operation>;
                }

                namespace UserEventService {

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.UserEventService|writeUserEvent}.
                     * @param error Error, if any
                     * @param [response] UserEvent
                     */
                    type WriteUserEventCallback = (error: (Error|null), response?: google.cloud.retail.v2beta.UserEvent) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.UserEventService|collectUserEvent}.
                     * @param error Error, if any
                     * @param [response] HttpBody
                     */
                    type CollectUserEventCallback = (error: (Error|null), response?: google.api.HttpBody) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.UserEventService|purgeUserEvents}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type PurgeUserEventsCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.UserEventService|importUserEvents}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type ImportUserEventsCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.UserEventService|exportUserEvents}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type ExportUserEventsCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;

                    /**
                     * Callback as used by {@link google.cloud.retail.v2beta.UserEventService|rejoinUserEvents}.
                     * @param error Error, if any
                     * @param [response] Operation
                     */
                    type RejoinUserEventsCallback = (error: (Error|null), response?: google.longrunning.Operation) => void;
                }

                /** Properties of a WriteUserEventRequest. */
                interface IWriteUserEventRequest {

                    /** WriteUserEventRequest parent */
                    parent?: (string|null);

                    /** WriteUserEventRequest userEvent */
                    userEvent?: (google.cloud.retail.v2beta.IUserEvent|null);

                    /** WriteUserEventRequest writeAsync */
                    writeAsync?: (boolean|null);
                }

                /** Represents a WriteUserEventRequest. */
                class WriteUserEventRequest implements IWriteUserEventRequest {

                    /**
                     * Constructs a new WriteUserEventRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IWriteUserEventRequest);

                    /** WriteUserEventRequest parent. */
                    public parent: string;

                    /** WriteUserEventRequest userEvent. */
                    public userEvent?: (google.cloud.retail.v2beta.IUserEvent|null);

                    /** WriteUserEventRequest writeAsync. */
                    public writeAsync: boolean;

                    /**
                     * Creates a new WriteUserEventRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns WriteUserEventRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IWriteUserEventRequest): google.cloud.retail.v2beta.WriteUserEventRequest;

                    /**
                     * Encodes the specified WriteUserEventRequest message. Does not implicitly {@link google.cloud.retail.v2beta.WriteUserEventRequest.verify|verify} messages.
                     * @param message WriteUserEventRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IWriteUserEventRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified WriteUserEventRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.WriteUserEventRequest.verify|verify} messages.
                     * @param message WriteUserEventRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IWriteUserEventRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a WriteUserEventRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns WriteUserEventRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.WriteUserEventRequest;

                    /**
                     * Decodes a WriteUserEventRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns WriteUserEventRequest
                     * @throws {Error} If the payload 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.retail.v2beta.WriteUserEventRequest;

                    /**
                     * Verifies a WriteUserEventRequest message.
                     * @param message Plain 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 WriteUserEventRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns WriteUserEventRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.WriteUserEventRequest;

                    /**
                     * Creates a plain object from a WriteUserEventRequest message. Also converts values to other types if specified.
                     * @param message WriteUserEventRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.WriteUserEventRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this WriteUserEventRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for WriteUserEventRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a CollectUserEventRequest. */
                interface ICollectUserEventRequest {

                    /** CollectUserEventRequest prebuiltRule */
                    prebuiltRule?: (string|null);

                    /** CollectUserEventRequest parent */
                    parent?: (string|null);

                    /** CollectUserEventRequest userEvent */
                    userEvent?: (string|null);

                    /** CollectUserEventRequest uri */
                    uri?: (string|null);

                    /** CollectUserEventRequest ets */
                    ets?: (number|Long|string|null);

                    /** CollectUserEventRequest rawJson */
                    rawJson?: (string|null);
                }

                /** Represents a CollectUserEventRequest. */
                class CollectUserEventRequest implements ICollectUserEventRequest {

                    /**
                     * Constructs a new CollectUserEventRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.ICollectUserEventRequest);

                    /** CollectUserEventRequest prebuiltRule. */
                    public prebuiltRule?: (string|null);

                    /** CollectUserEventRequest parent. */
                    public parent: string;

                    /** CollectUserEventRequest userEvent. */
                    public userEvent: string;

                    /** CollectUserEventRequest uri. */
                    public uri: string;

                    /** CollectUserEventRequest ets. */
                    public ets: (number|Long|string);

                    /** CollectUserEventRequest rawJson. */
                    public rawJson: string;

                    /** CollectUserEventRequest conversionRule. */
                    public conversionRule?: "prebuiltRule";

                    /**
                     * Creates a new CollectUserEventRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns CollectUserEventRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.ICollectUserEventRequest): google.cloud.retail.v2beta.CollectUserEventRequest;

                    /**
                     * Encodes the specified CollectUserEventRequest message. Does not implicitly {@link google.cloud.retail.v2beta.CollectUserEventRequest.verify|verify} messages.
                     * @param message CollectUserEventRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.ICollectUserEventRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified CollectUserEventRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.CollectUserEventRequest.verify|verify} messages.
                     * @param message CollectUserEventRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.ICollectUserEventRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a CollectUserEventRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns CollectUserEventRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.CollectUserEventRequest;

                    /**
                     * Decodes a CollectUserEventRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns CollectUserEventRequest
                     * @throws {Error} If the payload 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.retail.v2beta.CollectUserEventRequest;

                    /**
                     * Verifies a CollectUserEventRequest message.
                     * @param message Plain 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 CollectUserEventRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns CollectUserEventRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.CollectUserEventRequest;

                    /**
                     * Creates a plain object from a CollectUserEventRequest message. Also converts values to other types if specified.
                     * @param message CollectUserEventRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.CollectUserEventRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this CollectUserEventRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for CollectUserEventRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RejoinUserEventsRequest. */
                interface IRejoinUserEventsRequest {

                    /** RejoinUserEventsRequest parent */
                    parent?: (string|null);

                    /** RejoinUserEventsRequest userEventRejoinScope */
                    userEventRejoinScope?: (google.cloud.retail.v2beta.RejoinUserEventsRequest.UserEventRejoinScope|keyof typeof google.cloud.retail.v2beta.RejoinUserEventsRequest.UserEventRejoinScope|null);
                }

                /** Represents a RejoinUserEventsRequest. */
                class RejoinUserEventsRequest implements IRejoinUserEventsRequest {

                    /**
                     * Constructs a new RejoinUserEventsRequest.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IRejoinUserEventsRequest);

                    /** RejoinUserEventsRequest parent. */
                    public parent: string;

                    /** RejoinUserEventsRequest userEventRejoinScope. */
                    public userEventRejoinScope: (google.cloud.retail.v2beta.RejoinUserEventsRequest.UserEventRejoinScope|keyof typeof google.cloud.retail.v2beta.RejoinUserEventsRequest.UserEventRejoinScope);

                    /**
                     * Creates a new RejoinUserEventsRequest instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RejoinUserEventsRequest instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IRejoinUserEventsRequest): google.cloud.retail.v2beta.RejoinUserEventsRequest;

                    /**
                     * Encodes the specified RejoinUserEventsRequest message. Does not implicitly {@link google.cloud.retail.v2beta.RejoinUserEventsRequest.verify|verify} messages.
                     * @param message RejoinUserEventsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IRejoinUserEventsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RejoinUserEventsRequest message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.RejoinUserEventsRequest.verify|verify} messages.
                     * @param message RejoinUserEventsRequest message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IRejoinUserEventsRequest, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RejoinUserEventsRequest message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RejoinUserEventsRequest
                     * @throws {Error} If the payload is not 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.retail.v2beta.RejoinUserEventsRequest;

                    /**
                     * Decodes a RejoinUserEventsRequest message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RejoinUserEventsRequest
                     * @throws {Error} If the payload 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.retail.v2beta.RejoinUserEventsRequest;

                    /**
                     * Verifies a RejoinUserEventsRequest message.
                     * @param message Plain 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 RejoinUserEventsRequest message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RejoinUserEventsRequest
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.RejoinUserEventsRequest;

                    /**
                     * Creates a plain object from a RejoinUserEventsRequest message. Also converts values to other types if specified.
                     * @param message RejoinUserEventsRequest
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.RejoinUserEventsRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RejoinUserEventsRequest to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RejoinUserEventsRequest
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace RejoinUserEventsRequest {

                    /** UserEventRejoinScope enum. */
                    enum UserEventRejoinScope {
                        USER_EVENT_REJOIN_SCOPE_UNSPECIFIED = 0,
                        JOINED_EVENTS = 1,
                        UNJOINED_EVENTS = 2
                    }
                }

                /** Properties of a RejoinUserEventsResponse. */
                interface IRejoinUserEventsResponse {

                    /** RejoinUserEventsResponse rejoinedUserEventsCount */
                    rejoinedUserEventsCount?: (number|Long|string|null);
                }

                /** Represents a RejoinUserEventsResponse. */
                class RejoinUserEventsResponse implements IRejoinUserEventsResponse {

                    /**
                     * Constructs a new RejoinUserEventsResponse.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IRejoinUserEventsResponse);

                    /** RejoinUserEventsResponse rejoinedUserEventsCount. */
                    public rejoinedUserEventsCount: (number|Long|string);

                    /**
                     * Creates a new RejoinUserEventsResponse instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RejoinUserEventsResponse instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IRejoinUserEventsResponse): google.cloud.retail.v2beta.RejoinUserEventsResponse;

                    /**
                     * Encodes the specified RejoinUserEventsResponse message. Does not implicitly {@link google.cloud.retail.v2beta.RejoinUserEventsResponse.verify|verify} messages.
                     * @param message RejoinUserEventsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IRejoinUserEventsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RejoinUserEventsResponse message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.RejoinUserEventsResponse.verify|verify} messages.
                     * @param message RejoinUserEventsResponse message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IRejoinUserEventsResponse, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RejoinUserEventsResponse message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RejoinUserEventsResponse
                     * @throws {Error} If the payload is not 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.retail.v2beta.RejoinUserEventsResponse;

                    /**
                     * Decodes a RejoinUserEventsResponse message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RejoinUserEventsResponse
                     * @throws {Error} If the payload 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.retail.v2beta.RejoinUserEventsResponse;

                    /**
                     * Verifies a RejoinUserEventsResponse message.
                     * @param message Plain 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 RejoinUserEventsResponse message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RejoinUserEventsResponse
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.RejoinUserEventsResponse;

                    /**
                     * Creates a plain object from a RejoinUserEventsResponse message. Also converts values to other types if specified.
                     * @param message RejoinUserEventsResponse
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.RejoinUserEventsResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RejoinUserEventsResponse to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RejoinUserEventsResponse
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a RejoinUserEventsMetadata. */
                interface IRejoinUserEventsMetadata {
                }

                /** Represents a RejoinUserEventsMetadata. */
                class RejoinUserEventsMetadata implements IRejoinUserEventsMetadata {

                    /**
                     * Constructs a new RejoinUserEventsMetadata.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: google.cloud.retail.v2beta.IRejoinUserEventsMetadata);

                    /**
                     * Creates a new RejoinUserEventsMetadata instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns RejoinUserEventsMetadata instance
                     */
                    public static create(properties?: google.cloud.retail.v2beta.IRejoinUserEventsMetadata): google.cloud.retail.v2beta.RejoinUserEventsMetadata;

                    /**
                     * Encodes the specified RejoinUserEventsMetadata message. Does not implicitly {@link google.cloud.retail.v2beta.RejoinUserEventsMetadata.verify|verify} messages.
                     * @param message RejoinUserEventsMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: google.cloud.retail.v2beta.IRejoinUserEventsMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified RejoinUserEventsMetadata message, length delimited. Does not implicitly {@link google.cloud.retail.v2beta.RejoinUserEventsMetadata.verify|verify} messages.
                     * @param message RejoinUserEventsMetadata message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: google.cloud.retail.v2beta.IRejoinUserEventsMetadata, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a RejoinUserEventsMetadata message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns RejoinUserEventsMetadata
                     * @throws {Error} If the payload is not 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.retail.v2beta.RejoinUserEventsMetadata;

                    /**
                     * Decodes a RejoinUserEventsMetadata message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns RejoinUserEventsMetadata
                     * @throws {Error} If the payload 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.retail.v2beta.RejoinUserEventsMetadata;

                    /**
                     * Verifies a RejoinUserEventsMetadata message.
                     * @param message Plain 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 RejoinUserEventsMetadata message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns RejoinUserEventsMetadata
                     */
                    public static fromObject(object: { [k: string]: any }): google.cloud.retail.v2beta.RejoinUserEventsMetadata;

                    /**
                     * Creates a plain object from a RejoinUserEventsMetadata message. Also converts values to other types if specified.
                     * @param message RejoinUserEventsMetadata
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: google.cloud.retail.v2beta.RejoinUserEventsMetadata, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this RejoinUserEventsMetadata to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for RejoinUserEventsMetadata
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }
        }
    }

    /** Namespace api. */
    namespace api {

        /** 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);

            /** Publishing restReferenceDocumentationUri */
            restReferenceDocumentationUri?: (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;

            /** Publishing restReferenceDocumentationUri. */
            public restReferenceDocumentationUri: 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
        }

        /** 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 HttpBody. */
        interface IHttpBody {

            /** HttpBody contentType */
            contentType?: (string|null);

            /** HttpBody data */
            data?: (Uint8Array|Buffer|string|null);

            /** HttpBody extensions */
            extensions?: (google.protobuf.IAny[]|null);
        }

        /** Represents a HttpBody. */
        class HttpBody implements IHttpBody {

            /**
             * Constructs a new HttpBody.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.api.IHttpBody);

            /** HttpBody contentType. */
            public contentType: string;

            /** HttpBody data. */
            public data: (Uint8Array|Buffer|string);

            /** HttpBody extensions. */
            public extensions: google.protobuf.IAny[];

            /**
             * Creates a new HttpBody instance using the specified properties.
             * @param [properties] Properties to set
             * @returns HttpBody instance
             */
            public static create(properties?: google.api.IHttpBody): google.api.HttpBody;

            /**
             * Encodes the specified HttpBody message. Does not implicitly {@link google.api.HttpBody.verify|verify} messages.
             * @param message HttpBody message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.api.IHttpBody, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified HttpBody message, length delimited. Does not implicitly {@link google.api.HttpBody.verify|verify} messages.
             * @param message HttpBody message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.api.IHttpBody, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a HttpBody message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns HttpBody
             * @throws {Error} If the payload is not 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.HttpBody;

            /**
             * Decodes a HttpBody message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns HttpBody
             * @throws {Error} If the payload 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.HttpBody;

            /**
             * Verifies a HttpBody message.
             * @param message Plain 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 HttpBody message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns HttpBody
             */
            public static fromObject(object: { [k: string]: any }): google.api.HttpBody;

            /**
             * Creates a plain object from a HttpBody message. Also converts values to other types if specified.
             * @param message HttpBody
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.api.HttpBody, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this HttpBody to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for HttpBody
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }
    }

    /** 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);

            /** ServiceOptions .google.api.apiVersion */
            ".google.api.apiVersion"?: (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|Buffer|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|Buffer|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 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 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|Buffer|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|Buffer|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 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;
        }

        /** 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 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|Buffer|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|Buffer|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 Struct. */
        interface IStruct {

            /** Struct fields */
            fields?: ({ [k: string]: google.protobuf.IValue }|null);
        }

        /** Represents a Struct. */
        class Struct implements IStruct {

            /**
             * Constructs a new Struct.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IStruct);

            /** Struct fields. */
            public fields: { [k: string]: google.protobuf.IValue };

            /**
             * Creates a new Struct instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Struct instance
             */
            public static create(properties?: google.protobuf.IStruct): google.protobuf.Struct;

            /**
             * Encodes the specified Struct message. Does not implicitly {@link google.protobuf.Struct.verify|verify} messages.
             * @param message Struct message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IStruct, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Struct message, length delimited. Does not implicitly {@link google.protobuf.Struct.verify|verify} messages.
             * @param message Struct message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IStruct, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Struct message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Struct
             * @throws {Error} If the payload is not 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.Struct;

            /**
             * Decodes a Struct message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Struct
             * @throws {Error} If the payload 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.Struct;

            /**
             * Verifies a Struct message.
             * @param message Plain 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 Struct message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Struct
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.Struct;

            /**
             * Creates a plain object from a Struct message. Also converts values to other types if specified.
             * @param message Struct
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.Struct, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Struct to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Struct
             * @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 nullValue */
            nullValue?: (google.protobuf.NullValue|keyof typeof google.protobuf.NullValue|null);

            /** Value numberValue */
            numberValue?: (number|null);

            /** Value stringValue */
            stringValue?: (string|null);

            /** Value boolValue */
            boolValue?: (boolean|null);

            /** Value structValue */
            structValue?: (google.protobuf.IStruct|null);

            /** Value listValue */
            listValue?: (google.protobuf.IListValue|null);
        }

        /** Represents a Value. */
        class Value implements IValue {

            /**
             * Constructs a new Value.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IValue);

            /** Value nullValue. */
            public nullValue?: (google.protobuf.NullValue|keyof typeof google.protobuf.NullValue|null);

            /** Value numberValue. */
            public numberValue?: (number|null);

            /** Value stringValue. */
            public stringValue?: (string|null);

            /** Value boolValue. */
            public boolValue?: (boolean|null);

            /** Value structValue. */
            public structValue?: (google.protobuf.IStruct|null);

            /** Value listValue. */
            public listValue?: (google.protobuf.IListValue|null);

            /** Value kind. */
            public kind?: ("nullValue"|"numberValue"|"stringValue"|"boolValue"|"structValue"|"listValue");

            /**
             * Creates a new Value instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Value instance
             */
            public static create(properties?: google.protobuf.IValue): google.protobuf.Value;

            /**
             * Encodes the specified Value message. Does not implicitly {@link google.protobuf.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.protobuf.IValue, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Value message, length delimited. Does not implicitly {@link google.protobuf.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.protobuf.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.protobuf.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.protobuf.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.protobuf.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.protobuf.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;
        }

        /** NullValue enum. */
        enum NullValue {
            NULL_VALUE = 0
        }

        /** Properties of a ListValue. */
        interface IListValue {

            /** ListValue values */
            values?: (google.protobuf.IValue[]|null);
        }

        /** Represents a ListValue. */
        class ListValue implements IListValue {

            /**
             * Constructs a new ListValue.
             * @param [properties] Properties to set
             */
            constructor(properties?: google.protobuf.IListValue);

            /** ListValue values. */
            public values: google.protobuf.IValue[];

            /**
             * Creates a new ListValue instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ListValue instance
             */
            public static create(properties?: google.protobuf.IListValue): google.protobuf.ListValue;

            /**
             * Encodes the specified ListValue message. Does not implicitly {@link google.protobuf.ListValue.verify|verify} messages.
             * @param message ListValue message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: google.protobuf.IListValue, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified ListValue message, length delimited. Does not implicitly {@link google.protobuf.ListValue.verify|verify} messages.
             * @param message ListValue message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: google.protobuf.IListValue, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a ListValue message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ListValue
             * @throws {Error} If the payload is not 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.ListValue;

            /**
             * Decodes a ListValue message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ListValue
             * @throws {Error} If the payload 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.ListValue;

            /**
             * Verifies a ListValue message.
             * @param message Plain 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 ListValue message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns ListValue
             */
            public static fromObject(object: { [k: string]: any }): google.protobuf.ListValue;

            /**
             * Creates a plain object from a ListValue message. Also converts values to other types if specified.
             * @param message ListValue
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: google.protobuf.ListValue, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ListValue to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for ListValue
             * @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 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;
        }
    }

    /** Namespace type. */
    namespace type {

        /** 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;
        }
    }
}
